Index: .clang-format =================================================================== --- .clang-format (revision 14776) +++ .clang-format (working copy) @@ -81,8 +81,8 @@ #JavaScriptQuotes #JavaScriptWrapImports KeepEmptyLinesAtTheStartOfBlocks: true -MacroBlockBegin: '^BEGIN_MESSAGE_MAP$' #? -MacroBlockEnd: '^END_MESSAGE_MAP$' #? +MacroBlockBegin: '^MPT_TEST_GROUP_BEGIN|BEGIN_MESSAGE_MAP$' #? +MacroBlockEnd: '^MPT_TEST_GROUP_END|END_MESSAGE_MAP$' #? MaxEmptyLinesToKeep: 5 NamespaceIndentation: None NamespaceMacros: [] #? @@ -123,7 +123,7 @@ SpacesInContainerLiterals: false SpacesInParentheses: false SpacesInSquareBrackets: false -StatementMacros: [ 'OPENMPT_NAMESPACE_BEGIN', 'OPENMPT_NAMESPACE_END', 'MPT_MSVC_WORKAROUND_LNK4221' ] #? +StatementMacros: [ 'OPENMPT_NAMESPACE_BEGIN', 'OPENMPT_NAMESPACE_END', 'MPT_MSVC_WORKAROUND_LNK4221', 'MPT_WARNING', 'MPT_TEST_GROUP_INLINE_IDENTIFIER', 'MPT_TEST_GROUP_INLINE', 'MPT_TEST_GROUP_STATIC' ] #? TabWidth: 4 TypenameMacros: [] #? UseCRLF: false Index: build/android_ndk/Android.mk =================================================================== --- build/android_ndk/Android.mk (revision 14776) +++ build/android_ndk/Android.mk (working copy) @@ -11,7 +11,7 @@ LOCAL_CPP_FEATURES += exceptions rtti -LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/common $(LOCAL_PATH)/build/svn_version +LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/src $(LOCAL_PATH)/common $(LOCAL_PATH)/build/svn_version LOCAL_CFLAGS += -fvisibility=hidden -Wall -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB LOCAL_CPPFLAGS +=#-fvisibility=hidden -Wall -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB Index: build/auto/dist.sh =================================================================== --- build/auto/dist.sh (revision 14776) +++ build/auto/dist.sh (working copy) @@ -89,7 +89,7 @@ rm bin/empty.c echo "Checking version helper ..." -c++ -Wall -Wextra -I. build/auto/helper_get_openmpt_version.cpp -o bin/helper_get_openmpt_version +c++ -Wall -Wextra -I. -Isrc build/auto/helper_get_openmpt_version.cpp -o bin/helper_get_openmpt_version rm bin/helper_get_openmpt_version # Clean dist Index: build/auto/helper_get_openmpt_version.cmd =================================================================== --- build/auto/helper_get_openmpt_version.cmd (revision 14776) +++ build/auto/helper_get_openmpt_version.cmd (working copy) @@ -1,7 +1,7 @@ @echo off cd build\auto -cl /I..\.. /EHsc helper_get_openmpt_version.cpp +cl /I..\.. /I..\..\src /EHsc helper_get_openmpt_version.cpp cd ..\.. build\auto\helper_get_openmpt_version.exe openmpt > openmpt_version.txt Index: build/autotools/autoconfiscate.sh =================================================================== --- build/autotools/autoconfiscate.sh (revision 14776) +++ build/autotools/autoconfiscate.sh (working copy) @@ -41,7 +41,35 @@ svn export ./soundbase bin/dist-autotools/soundbase svn export ./soundlib bin/dist-autotools/soundlib svn export ./sounddsp bin/dist-autotools/sounddsp +mkdir -p bin/dist-autotools/src/mpt +svn export ./src/mpt/.clang-format bin/dist-autotools/src/mpt/.clang-format +svn export ./src/mpt/LICENSE.BSD-3-Clause.txt bin/dist-autotools/src/mpt/LICENSE.BSD-3-Clause.txt +svn export ./src/mpt/LICENSE.BSL-1.0.txt bin/dist-autotools/src/mpt/LICENSE.BSL-1.0.txt +svn export ./src/mpt/base bin/dist-autotools/src/mpt/base +svn export ./src/mpt/binary bin/dist-autotools/src/mpt/binary +svn export ./src/mpt/check bin/dist-autotools/src/mpt/check +svn export ./src/mpt/crc bin/dist-autotools/src/mpt/crc +#svn export ./src/mpt/crypto bin/dist-autotools/src/mpt/crypto +svn export ./src/mpt/detect bin/dist-autotools/src/mpt/detect +svn export ./src/mpt/endian bin/dist-autotools/src/mpt/endian +svn export ./src/mpt/environment bin/dist-autotools/src/mpt/environment +svn export ./src/mpt/exception_text bin/dist-autotools/src/mpt/exception_text +svn export ./src/mpt/format bin/dist-autotools/src/mpt/format +#svn export ./src/mpt/json bin/dist-autotools/src/mpt/json +svn export ./src/mpt/mutex bin/dist-autotools/src/mpt/mutex +svn export ./src/mpt/out_of_memory bin/dist-autotools/src/mpt/out_of_memory +svn export ./src/mpt/osinfo bin/dist-autotools/src/mpt/osinfo +svn export ./src/mpt/parse bin/dist-autotools/src/mpt/parse +svn export ./src/mpt/random bin/dist-autotools/src/mpt/random +svn export ./src/mpt/string bin/dist-autotools/src/mpt/string +svn export ./src/mpt/string_convert bin/dist-autotools/src/mpt/string_convert +svn export ./src/mpt/system_error bin/dist-autotools/src/mpt/system_error +svn export ./src/mpt/test bin/dist-autotools/src/mpt/test +svn export ./src/mpt/uuid bin/dist-autotools/src/mpt/uuid +#svn export ./src/mpt/uuid_namespace bin/dist-autotools/src/mpt/uuid_namespace svn export ./test bin/dist-autotools/test +rm bin/dist-autotools/test/mpt_tests_crypto.cpp +rm bin/dist-autotools/test/mpt_tests_uuid_namespace.cpp svn export ./libopenmpt bin/dist-autotools/libopenmpt svn export ./examples bin/dist-autotools/examples svn export ./openmpt123 bin/dist-autotools/openmpt123 @@ -68,7 +96,35 @@ cp -r ./soundbase bin/dist-autotools/soundbase cp -r ./soundlib bin/dist-autotools/soundlib cp -r ./sounddsp bin/dist-autotools/sounddsp +mkdir -p bin/dist-autotools/src/mpt +cp -r ./src/mpt/.clang-format bin/dist-autotools/src/mpt/.clang-format +cp -r ./src/mpt/LICENSE.BSD-3-Clause.txt bin/dist-autotools/src/mpt/LICENSE.BSD-3-Clause.txt +cp -r ./src/mpt/LICENSE.BSL-1.0.txt bin/dist-autotools/src/mpt/LICENSE.BSL-1.0.txt +cp -r ./src/mpt/base bin/dist-autotools/src/mpt/base +cp -r ./src/mpt/binary bin/dist-autotools/src/mpt/binary +cp -r ./src/mpt/check bin/dist-autotools/src/mpt/check +cp -r ./src/mpt/crc bin/dist-autotools/src/mpt/crc +#cp -r ./src/mpt/crypto bin/dist-autotools/src/mpt/crypto +cp -r ./src/mpt/detect bin/dist-autotools/src/mpt/detect +cp -r ./src/mpt/endian bin/dist-autotools/src/mpt/endian +cp -r ./src/mpt/environment bin/dist-autotools/src/mpt/environment +cp -r ./src/mpt/exception_text bin/dist-autotools/src/mpt/exception_text +cp -r ./src/mpt/format bin/dist-autotools/src/mpt/format +#cp -r ./src/mpt/json bin/dist-autotools/src/mpt/json +cp -r ./src/mpt/mutex bin/dist-autotools/src/mpt/mutex +cp -r ./src/mpt/out_of_memory bin/dist-autotools/src/mpt/out_of_memory +cp -r ./src/mpt/osinfo bin/dist-autotools/src/mpt/osinfo +cp -r ./src/mpt/parse bin/dist-autotools/src/mpt/parse +cp -r ./src/mpt/random bin/dist-autotools/src/mpt/random +cp -r ./src/mpt/string bin/dist-autotools/src/mpt/string +cp -r ./src/mpt/string_convert bin/dist-autotools/src/mpt/string_convert +cp -r ./src/mpt/system_error bin/dist-autotools/src/mpt/system_error +cp -r ./src/mpt/test bin/dist-autotools/src/mpt/test +cp -r ./src/mpt/uuid bin/dist-autotools/src/mpt/uuid +#cp -r ./src/mpt/uuid_namespace bin/dist-autotools/src/mpt/uuid_namespace cp -r ./test bin/dist-autotools/test +rm bin/dist-autotools/test/mpt_tests_crypto.cpp +rm bin/dist-autotools/test/mpt_tests_uuid_namespace.cpp cp -r ./libopenmpt bin/dist-autotools/libopenmpt cp -r ./examples bin/dist-autotools/examples cp -r ./openmpt123 bin/dist-autotools/openmpt123 Index: build/autotools/Makefile.am =================================================================== --- build/autotools/Makefile.am (revision 14776) +++ build/autotools/Makefile.am (working copy) @@ -19,6 +19,9 @@ EXTRA_DIST += libopenmpt/dox/tests.md EXTRA_DIST += libopenmpt/libopenmpt_version.mk EXTRA_DIST += openmpt123/.clang-format +EXTRA_DIST += src/mpt/.clang-format +EXTRA_DIST += src/mpt/LICENSE.BSD-3-Clause.txt +EXTRA_DIST += src/mpt/LICENSE.BSL-1.0.txt EXTRA_DIST += test/test.xm EXTRA_DIST += test/test.s3m EXTRA_DIST += test/test.mod @@ -109,6 +112,109 @@ pkgconfig_DATA = nobase_include_HEADERS = +MPT_FILES_SRC_MPT = +MPT_FILES_SRC_MPT += src/mpt/base/algorithm.hpp +MPT_FILES_SRC_MPT += src/mpt/base/alloc.hpp +MPT_FILES_SRC_MPT += src/mpt/base/arithmetic_shift.hpp +MPT_FILES_SRC_MPT += src/mpt/base/array.hpp +MPT_FILES_SRC_MPT += src/mpt/base/bit.hpp +MPT_FILES_SRC_MPT += src/mpt/base/check_platform.hpp +MPT_FILES_SRC_MPT += src/mpt/base/compiletime_warning.hpp +MPT_FILES_SRC_MPT += src/mpt/base/constexpr_throw.hpp +MPT_FILES_SRC_MPT += src/mpt/base/detect.hpp +MPT_FILES_SRC_MPT += src/mpt/base/detect_compiler.hpp +MPT_FILES_SRC_MPT += src/mpt/base/detect_libc.hpp +MPT_FILES_SRC_MPT += src/mpt/base/detect_libcxx.hpp +MPT_FILES_SRC_MPT += src/mpt/base/detect_os.hpp +MPT_FILES_SRC_MPT += src/mpt/base/detect_quirks.hpp +MPT_FILES_SRC_MPT += src/mpt/base/floatingpoint.hpp +MPT_FILES_SRC_MPT += src/mpt/base/integer.hpp +MPT_FILES_SRC_MPT += src/mpt/base/macros.hpp +MPT_FILES_SRC_MPT += src/mpt/base/math.hpp +MPT_FILES_SRC_MPT += src/mpt/base/memory.hpp +MPT_FILES_SRC_MPT += src/mpt/base/namespace.hpp +MPT_FILES_SRC_MPT += src/mpt/base/numeric.hpp +MPT_FILES_SRC_MPT += src/mpt/base/pointer.hpp +MPT_FILES_SRC_MPT += src/mpt/base/preprocessor.hpp +MPT_FILES_SRC_MPT += src/mpt/base/saturate_cast.hpp +MPT_FILES_SRC_MPT += src/mpt/base/saturate_round.hpp +MPT_FILES_SRC_MPT += src/mpt/base/secure.hpp +MPT_FILES_SRC_MPT += src/mpt/base/semantic_version.hpp +MPT_FILES_SRC_MPT += src/mpt/base/source_location.hpp +MPT_FILES_SRC_MPT += src/mpt/base/span.hpp +MPT_FILES_SRC_MPT += src/mpt/base/utility.hpp +MPT_FILES_SRC_MPT += src/mpt/base/version.hpp +MPT_FILES_SRC_MPT += src/mpt/base/wrapping_divide.hpp +MPT_FILES_SRC_MPT += src/mpt/binary/base64.hpp +MPT_FILES_SRC_MPT += src/mpt/binary/base64url.hpp +MPT_FILES_SRC_MPT += src/mpt/binary/hex.hpp +MPT_FILES_SRC_MPT += src/mpt/check/libc.hpp +MPT_FILES_SRC_MPT += src/mpt/check/mfc.hpp +MPT_FILES_SRC_MPT += src/mpt/check/windows.hpp +MPT_FILES_SRC_MPT += src/mpt/crc/crc.hpp +#MPT_FILES_SRC_MPT += src/mpt/crypto/exception.hpp +#MPT_FILES_SRC_MPT += src/mpt/crypto/hash.hpp +#MPT_FILES_SRC_MPT += src/mpt/crypto/jwk.hpp +MPT_FILES_SRC_MPT += src/mpt/detect/mfc.hpp +MPT_FILES_SRC_MPT += src/mpt/detect/nlohmann_json.hpp +MPT_FILES_SRC_MPT += src/mpt/endian/floatingpoint.hpp +MPT_FILES_SRC_MPT += src/mpt/endian/integer.hpp +MPT_FILES_SRC_MPT += src/mpt/environment/environment.hpp +MPT_FILES_SRC_MPT += src/mpt/exception_text/exception_text.hpp +MPT_FILES_SRC_MPT += src/mpt/format/default_floatingpoint.hpp +MPT_FILES_SRC_MPT += src/mpt/format/default_formatter.hpp +MPT_FILES_SRC_MPT += src/mpt/format/default_integer.hpp +MPT_FILES_SRC_MPT += src/mpt/format/default_string.hpp +MPT_FILES_SRC_MPT += src/mpt/format/helpers.hpp +MPT_FILES_SRC_MPT += src/mpt/format/message.hpp +MPT_FILES_SRC_MPT += src/mpt/format/message_macros.hpp +MPT_FILES_SRC_MPT += src/mpt/format/simple.hpp +MPT_FILES_SRC_MPT += src/mpt/format/simple_floatingpoint.hpp +MPT_FILES_SRC_MPT += src/mpt/format/simple_integer.hpp +MPT_FILES_SRC_MPT += src/mpt/format/simple_spec.hpp +#MPT_FILES_SRC_MPT += src/mpt/json/json.hpp +MPT_FILES_SRC_MPT += src/mpt/mutex/mutex.hpp +MPT_FILES_SRC_MPT += src/mpt/osinfo/windows_version.hpp +MPT_FILES_SRC_MPT += src/mpt/out_of_memory/out_of_memory.hpp +MPT_FILES_SRC_MPT += src/mpt/parse/parse.hpp +MPT_FILES_SRC_MPT += src/mpt/random/crand.hpp +MPT_FILES_SRC_MPT += src/mpt/random/default_engines.hpp +MPT_FILES_SRC_MPT += src/mpt/random/device.hpp +MPT_FILES_SRC_MPT += src/mpt/random/engine.hpp +MPT_FILES_SRC_MPT += src/mpt/random/engine_lcg.hpp +MPT_FILES_SRC_MPT += src/mpt/random/random.hpp +MPT_FILES_SRC_MPT += src/mpt/random/seed.hpp +MPT_FILES_SRC_MPT += src/mpt/string/buffer.hpp +MPT_FILES_SRC_MPT += src/mpt/string/types.hpp +MPT_FILES_SRC_MPT += src/mpt/string/utility.hpp +MPT_FILES_SRC_MPT += src/mpt/string_convert/convert.hpp +MPT_FILES_SRC_MPT += src/mpt/string_convert/macros.hpp +MPT_FILES_SRC_MPT += src/mpt/system_error/system_error.hpp +MPT_FILES_SRC_MPT += src/mpt/test/test.hpp +MPT_FILES_SRC_MPT += src/mpt/test/test_macros.hpp +MPT_FILES_SRC_MPT += src/mpt/uuid/guid.hpp +MPT_FILES_SRC_MPT += src/mpt/uuid/uuid.hpp +#MPT_FILES_SRC_MPT += src/mpt/uuid_namespace/uuid_namespace.hpp +MPT_FILES_SRC_MPT += src/mpt/base/tests/tests_base_arithmetic_shift.hpp +MPT_FILES_SRC_MPT += src/mpt/base/tests/tests_base_bit.hpp +MPT_FILES_SRC_MPT += src/mpt/base/tests/tests_base_math.hpp +MPT_FILES_SRC_MPT += src/mpt/base/tests/tests_base_saturate_cast.hpp +MPT_FILES_SRC_MPT += src/mpt/base/tests/tests_base_saturate_round.hpp +MPT_FILES_SRC_MPT += src/mpt/base/tests/tests_base_wrapping_divide.hpp +MPT_FILES_SRC_MPT += src/mpt/binary/tests/tests_binary.hpp +MPT_FILES_SRC_MPT += src/mpt/crc/tests/tests_crc.hpp +#MPT_FILES_SRC_MPT += src/mpt/crypto/tests/tests_crypto.hpp +MPT_FILES_SRC_MPT += src/mpt/endian/tests/tests_endian_floatingpoint.hpp +MPT_FILES_SRC_MPT += src/mpt/endian/tests/tests_endian_integer.hpp +MPT_FILES_SRC_MPT += src/mpt/format/tests/tests_format_message.hpp +MPT_FILES_SRC_MPT += src/mpt/format/tests/tests_format_simple.hpp +MPT_FILES_SRC_MPT += src/mpt/parse/tests/tests_parse.hpp +MPT_FILES_SRC_MPT += src/mpt/random/tests/tests_random.hpp +MPT_FILES_SRC_MPT += src/mpt/string/tests/tests_string_buffer.hpp +MPT_FILES_SRC_MPT += src/mpt/string/tests/tests_string_utility.hpp +MPT_FILES_SRC_MPT += src/mpt/string_convert/tests/tests_string_convert.hpp +MPT_FILES_SRC_MPT += src/mpt/uuid/tests/tests_uuid.hpp +#MPT_FILES_SRC_MPT += src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp MPT_FILES_COMMON = MPT_FILES_COMMON += common/BuildSettings.h MPT_FILES_COMMON += common/CompilerDetect.h @@ -379,12 +485,13 @@ nobase_include_HEADERS += libopenmpt/libopenmpt_stream_callbacks_file.h nobase_include_HEADERS += libopenmpt/libopenmpt_ext.h nobase_include_HEADERS += libopenmpt/libopenmpt_ext.hpp -libopenmpt_la_CPPFLAGS = $(MINGWSTDTHREADS_CPPFLAGS) -DLIBOPENMPT_BUILD -I$(srcdir)/build/svn_version -I$(srcdir)/ -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CPPFLAGS = $(MINGWSTDTHREADS_CPPFLAGS) -DLIBOPENMPT_BUILD -I$(srcdir)/build/svn_version -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_CXXFLAGS = $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_CFLAGS = $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_LIBADD = $(ZLIB_LIBS) $(MPG123_LIBS) $(OGG_LIBS) $(VORBIS_LIBS) $(VORBISFILE_LIBS) $(LIBOPENMPT_WIN32_LIBS) libopenmpt_la_SOURCES = libopenmpt_la_SOURCES += build/svn_version/svn_version.h +libopenmpt_la_SOURCES += $(MPT_FILES_SRC_MPT) libopenmpt_la_SOURCES += $(MPT_FILES_COMMON) libopenmpt_la_SOURCES += $(MPT_FILES_SOUNDBASE) libopenmpt_la_SOURCES += $(MPT_FILES_SOUNDLIB) @@ -408,12 +515,24 @@ if ENABLE_TESTS check_PROGRAMS += libopenmpttest -libopenmpttest_CPPFLAGS = $(MINGWSTDTHREADS_CPPFLAGS) -DLIBOPENMPT_BUILD -DLIBOPENMPT_BUILD_TEST -I$(srcdir)/build/svn_version -I$(srcdir)/ -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpttest_CPPFLAGS = $(MINGWSTDTHREADS_CPPFLAGS) -DLIBOPENMPT_BUILD -DLIBOPENMPT_BUILD_TEST -I$(srcdir)/build/svn_version -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpttest_CXXFLAGS = $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CXXFLAGS) libopenmpttest_CFLAGS = $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CFLAGS) libopenmpttest_LDADD = $(ZLIB_LIBS) $(MPG123_LIBS) $(OGG_LIBS) $(VORBIS_LIBS) $(VORBISFILE_LIBS) $(LIBOPENMPT_WIN32_LIB) libopenmpttest_SOURCES = libopenmpttest_SOURCES += libopenmpt/libopenmpt_test.cpp +libopenmpttest_SOURCES += test/mpt_tests_base.cpp +libopenmpttest_SOURCES += test/mpt_tests_binary.cpp +libopenmpttest_SOURCES += test/mpt_tests_crc.cpp +#libopenmpttest_SOURCES += test/mpt_tests_crypto.cpp +libopenmpttest_SOURCES += test/mpt_tests_endian.cpp +libopenmpttest_SOURCES += test/mpt_tests_format.cpp +libopenmpttest_SOURCES += test/mpt_tests_parse.cpp +libopenmpttest_SOURCES += test/mpt_tests_random.cpp +libopenmpttest_SOURCES += test/mpt_tests_string.cpp +libopenmpttest_SOURCES += test/mpt_tests_string_convert.cpp +libopenmpttest_SOURCES += test/mpt_tests_uuid.cpp +#libopenmpttest_SOURCES += test/mpt_tests_uuid_namespace.cpp libopenmpttest_SOURCES += test/test.cpp libopenmpttest_SOURCES += test/test.h libopenmpttest_SOURCES += test/TestTools.h @@ -421,6 +540,7 @@ libopenmpttest_SOURCES += test/TestToolsLib.h libopenmpttest_SOURCES += test/TestToolsTracker.h libopenmpttest_SOURCES += build/svn_version/svn_version.h +libopenmpttest_SOURCES += $(MPT_FILES_SRC_MPT) libopenmpttest_SOURCES += $(MPT_FILES_COMMON) libopenmpttest_SOURCES += $(MPT_FILES_SOUNDBASE) libopenmpttest_SOURCES += $(MPT_FILES_SOUNDLIB) @@ -446,10 +566,11 @@ if ENABLE_OPENMPT123 bin_PROGRAMS += bin/openmpt123 -bin_openmpt123_CPPFLAGS = $(MINGWSTDTHREADS_CPPFLAGS) $(PORTAUDIO_CFLAGS) $(PULSEAUDIO_CFLAGS) $(SDL2_CFLAGS) $(SNDFILE_CFLAGS) $(FLAC_CFLAGS) +bin_openmpt123_CPPFLAGS = $(MINGWSTDTHREADS_CPPFLAGS) -I$(srcdir)/src $(PORTAUDIO_CFLAGS) $(PULSEAUDIO_CFLAGS) $(SDL2_CFLAGS) $(SNDFILE_CFLAGS) $(FLAC_CFLAGS) bin_openmpt123_CXXFLAGS = $(WIN32_CONSOLE_CXXFLAGS) bin_openmpt123_LDADD = libopenmpt.la $(PORTAUDIO_LIBS) $(PULSEAUDIO_LIBS) $(SDL2_LIBS) $(SNDFILE_LIBS) $(FLAC_LIBS) $(OPENMPT123_WIN32_LIBS) bin_openmpt123_SOURCES = +bin_openmpt123_SOURCES += $(MPT_FILES_SRC_MPT) bin_openmpt123_SOURCES += openmpt123/openmpt123_allegro42.hpp bin_openmpt123_SOURCES += openmpt123/openmpt123_config.hpp bin_openmpt123_SOURCES += openmpt123/openmpt123.cpp Index: build/genie/mpt-libopenmpt.lua =================================================================== --- build/genie/mpt-libopenmpt.lua (revision 14776) +++ build/genie/mpt-libopenmpt.lua (working copy) @@ -18,6 +18,7 @@ includedirs ( extincludedirs ) includedirs { "../..", + "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", @@ -24,6 +25,8 @@ "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -53,6 +56,16 @@ "../../libopenmpt/libopenmpt_ext_impl.cpp", "../../libopenmpt/libopenmpt_impl.cpp", } + excludes { + "../../src/mpt/crypto/**.cpp", + "../../src/mpt/crypto/**.hpp", + "../../src/mpt/json/**.cpp", + "../../src/mpt/json/**.hpp", + "../../src/mpt/test/**.cpp", + "../../src/mpt/test/**.hpp", + "../../src/mpt/uuid_namespace/**.cpp", + "../../src/mpt/uuid_namespace/**.hpp", + } resdefines { "MPT_BUILD_VER_FILENAME=\"" .. mpt_projectname .. ".dll\"", "MPT_BUILD_VER_FILEDESC=\"" .. mpt_projectname .. "\"", Index: build/premake/mpt-libopenmpt-small.lua =================================================================== --- build/premake/mpt-libopenmpt-small.lua (revision 14776) +++ build/premake/mpt-libopenmpt-small.lua (working copy) @@ -17,6 +17,7 @@ filter {} includedirs { "../..", + "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", @@ -23,6 +24,8 @@ "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -52,7 +55,16 @@ "../../libopenmpt/libopenmpt_ext_impl.cpp", "../../libopenmpt/libopenmpt_impl.cpp", } - + excludes { + "../../src/mpt/crypto/**.cpp", + "../../src/mpt/crypto/**.hpp", + "../../src/mpt/json/**.cpp", + "../../src/mpt/json/**.hpp", + "../../src/mpt/test/**.cpp", + "../../src/mpt/test/**.hpp", + "../../src/mpt/uuid_namespace/**.cpp", + "../../src/mpt/uuid_namespace/**.hpp", + } filter { "action:vs*" } resdefines { "MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\"", Index: build/premake/mpt-libopenmpt.lua =================================================================== --- build/premake/mpt-libopenmpt.lua (revision 14776) +++ build/premake/mpt-libopenmpt.lua (working copy) @@ -22,6 +22,7 @@ filter {} includedirs { "../..", + "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", @@ -28,6 +29,8 @@ "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -57,7 +60,16 @@ "../../libopenmpt/libopenmpt_ext_impl.cpp", "../../libopenmpt/libopenmpt_impl.cpp", } - + excludes { + "../../src/mpt/crypto/**.cpp", + "../../src/mpt/crypto/**.hpp", + "../../src/mpt/json/**.cpp", + "../../src/mpt/json/**.hpp", + "../../src/mpt/test/**.cpp", + "../../src/mpt/test/**.hpp", + "../../src/mpt/uuid_namespace/**.cpp", + "../../src/mpt/uuid_namespace/**.hpp", + } filter { "action:vs*", "kind:SharedLib or ConsoleApp or WindowedApp" } resdefines { "MPT_BUILD_VER_FILENAME=\"" .. mpt_projectname .. ".dll\"", Index: build/premake/mpt-libopenmpt_test.lua =================================================================== --- build/premake/mpt-libopenmpt_test.lua (revision 14776) +++ build/premake/mpt-libopenmpt_test.lua (working copy) @@ -22,6 +22,7 @@ filter {} includedirs { "../..", + "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", @@ -28,6 +29,8 @@ "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -60,6 +63,16 @@ "../../libopenmpt/libopenmpt_impl.cpp", "../../libopenmpt/libopenmpt_test.cpp", } + excludes { + "../../src/mpt/crypto/**.cpp", + "../../src/mpt/crypto/**.hpp", + "../../src/mpt/json/**.cpp", + "../../src/mpt/json/**.hpp", + "../../src/mpt/uuid_namespace/**.cpp", + "../../src/mpt/uuid_namespace/**.hpp", + "../../test/mpt_tests_crypto.cpp", + "../../test/mpt_tests_uuid_namespace.cpp", + } characterset "Unicode" warnings "Extra" defines { "LIBOPENMPT_BUILD", "LIBOPENMPT_BUILD_TEST" } Index: build/premake/mpt-OpenMPT.lua =================================================================== --- build/premake/mpt-OpenMPT.lua (revision 14776) +++ build/premake/mpt-OpenMPT.lua (working copy) @@ -52,6 +52,7 @@ sysincludedirs ( extincludedirs ) filter {} includedirs { + "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", @@ -76,6 +77,8 @@ } end files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -200,6 +203,7 @@ dofile "../../build/premake/premake-defaults-DLL.lua" dofile "../../build/premake/premake-defaults.lua" includedirs { + "../../src", "../../common", "../../include", "../../include/asiomodern/include", @@ -212,6 +216,8 @@ } files { "../../include/asiomodern/include/ASIOModern/*.hpp", + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -246,6 +252,7 @@ dofile "../../build/premake/premake-defaults-DLL.lua" dofile "../../build/premake/premake-defaults.lua" includedirs { + "../../src", "../../common", "../../include", "$(IntDir)/svn_version", Index: build/premake/mpt-openmpt123.lua =================================================================== --- build/premake/mpt-openmpt123.lua (revision 14776) +++ build/premake/mpt-openmpt123.lua (working copy) @@ -3,7 +3,7 @@ uuid "2879F62E-9E2F-4EAB-AE7D-F60C194DD5CB" language "C++" location ( "../../build/" .. mpt_projectpathname ) - vpaths { ["*"] = "../../openmpt123/" } + vpaths { ["*"] = "../../" } mpt_projectname = "openmpt123" dofile "../../build/premake/premake-defaults-EXE.lua" dofile "../../build/premake/premake-defaults.lua" @@ -10,6 +10,7 @@ warnings "Extra" local extincludedirs = { "../..", + "../../src", "../../include/flac/include", "../../include/portaudio/include", } @@ -25,6 +26,9 @@ "../../build/svn_version", } files { + "../../src/mpt/base/*.hpp", + "../../src/mpt/detect/*.hpp", + "../../src/mpt/string/*.hpp", "../../openmpt123/*.cpp", "../../openmpt123/*.hpp", } Index: build/premake/mpt-PluginBridge.lua =================================================================== --- build/premake/mpt-PluginBridge.lua (revision 14776) +++ build/premake/mpt-PluginBridge.lua (working copy) @@ -15,11 +15,14 @@ sysincludedirs ( extincludedirs ) filter {} includedirs { + "../../src", "../../common", "$(IntDir)/svn_version", "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../pluginBridge/AEffectWrapper.h", "../../pluginBridge/Bridge.cpp", "../../pluginBridge/Bridge.h", @@ -75,11 +78,14 @@ sysincludedirs ( extincludedirs ) filter {} includedirs { + "../../src", "../../common", "$(IntDir)/svn_version", "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../pluginBridge/AEffectWrapper.h", "../../pluginBridge/Bridge.cpp", "../../pluginBridge/Bridge.h", Index: build/premake/mpt-signtool.lua =================================================================== --- build/premake/mpt-signtool.lua (revision 14776) +++ build/premake/mpt-signtool.lua (working copy) @@ -8,6 +8,7 @@ dofile "../../build/premake/premake-defaults-EXE.lua" dofile "../../build/premake/premake-defaults.lua" includedirs { + "../../src", "../../common", "../../include", "../../include/nlohmann-json/include", @@ -15,6 +16,8 @@ "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../misc/*.cpp", Index: build/svn/run_clang-format.sh =================================================================== --- build/svn/run_clang-format.sh (revision 14776) +++ build/svn/run_clang-format.sh (working copy) @@ -16,3 +16,7 @@ cd soundbase clang-format-11 -i *.h cd .. + +cd src/mpt + find . -type f -iname '*hpp' | xargs clang-format-10 -i +cd .. Index: build/vs2017uwp/libopenmpt.vcxproj =================================================================== --- build/vs2017uwp/libopenmpt.vcxproj (revision 14776) +++ build/vs2017uwp/libopenmpt.vcxproj (working copy) @@ -286,7 +286,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -302,7 +302,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -321,7 +321,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -337,7 +337,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -356,7 +356,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -372,7 +372,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -390,7 +390,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -407,7 +407,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -428,7 +428,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -445,7 +445,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -466,7 +466,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -483,7 +483,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -503,7 +503,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -519,7 +519,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -538,7 +538,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -554,7 +554,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -573,7 +573,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -589,7 +589,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -607,7 +607,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -624,7 +624,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -645,7 +645,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -662,7 +662,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -683,7 +683,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -700,7 +700,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -717,6 +717,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + + + + true + + + true + Index: build/vs2017uwp/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017uwp/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2017uwp/libopenmpt.vcxproj.filters (working copy) @@ -1,6 +1,114 @@ + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {1ACB48A9-86AA-C744-8FC2-521BFB202EA6} + + + {B102DE80-9D65-6D25-46EB-A5DB322D39A8} + + + {A092E23B-8C76-A391-F5D6-9DE4E1D98D13} + + + {3B77F730-2745-EB36-10D9-5B5DFC45C79B} + + + {AAC627BD-9655-B186-3F74-C5812BE2C12C} + + + {940CB49C-00CD-2FD3-C907-7950358774AF} + + + {2EEFC068-9AA4-395E-2399-33358F4D3062} + + + {DD28764B-493F-74E1-92B6-FF02FE0B4569} + + + {97C4F533-8392-E939-6C26-5A605893C59E} + + + {06A9D974-F237-633E-9B56-773987C473E4} + + + {CFBF5C35-BB8D-503B-A421-C161908E2CA0} + + + {A50F4C38-91DD-3F3E-7A71-B06466DE1BA3} + + + {94862B67-8015-B530-2934-C92B15A2C5D6} + + + {4BCBC71D-B72C-A52B-409A-EBDDACFADBEA} + + + {C9C6093D-B5C0-328F-9E2D-C99F8AC698FB} + + + {1F0FBB3A-0BDD-AE40-F470-1F67E0DD8AA5} + + + {8EB9DEF5-7A48-68BF-2367-7CBA0FD57865} + + + {D0B1E280-BC14-7225-659A-AADB51DC3DA8} + + + {A962709D-1523-ECD3-DE5D-35514ADD30B0} + + + {44F4FC4F-30C2-F055-1956-617C05C3CCBA} + + + {3AB0B2BD-A61C-6EB8-6F10-0616DB3B9020} + + + {D1AD9B9D-3D6E-17D4-06A9-605172285CB0} + + + {C0153CF8-2C77-1906-B5E4-5FB8214550C5} + + + {9749B955-8317-AD5B-6CAB-1D82581889C0} + + + {06EE6C9E-F27C-F667-9B9B-0A638709070E} + + + {6D8A6859-5958-5C5F-42EC-CC852E5938C4} + + + {5CF7BA51-4886-441B-F1A4-5816DD1255C1} + + + {4DBC776B-39B6-A0BD-2223-37CE0EBC062A} + + + {3C11A0B3-28CC-8F5F-D183-08AABD1DDAEF} + + + {C4047277-B093-FB40-59B2-0F3C45200CE7} + + + {96F2E780-8255-7725-2BDB-AFDB171D43A8} + + + {ADC1E880-9924-7825-42AA-B0DB2EEC43A8} + + + {9C9ED71A-8882-9870-F1E2-92C3DDE582F2} + + + {B98C0F94-A586-38E6-8EF3-CEF67A8C9E52} + + + {A882657C-943D-5528-3DF5-CD72298F9FB8} + {AEFEE3F6-9AA0-0ECD-835B-22216F9C951D} @@ -24,6 +132,312 @@ + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid_namespace + + + src\mpt\uuid_namespace\tests + common Index: build/vs2017win10/libopenmpt-small.vcxproj =================================================================== --- build/vs2017win10/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2017win10/libopenmpt-small.vcxproj (working copy) @@ -533,7 +533,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -556,7 +556,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -579,7 +579,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -601,7 +601,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -623,7 +623,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -652,7 +652,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -680,7 +680,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -708,7 +708,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -736,7 +736,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -765,7 +765,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -793,7 +793,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -821,7 +821,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -849,7 +849,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -860,7 +860,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -876,7 +876,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -887,7 +887,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -903,7 +903,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -914,7 +914,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -930,7 +930,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -941,7 +941,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -957,7 +957,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -973,7 +973,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -991,7 +991,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1006,7 +1006,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1024,7 +1024,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1039,7 +1039,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1057,7 +1057,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1072,7 +1072,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1090,7 +1090,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1106,7 +1106,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1124,7 +1124,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1139,7 +1139,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1157,7 +1157,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1172,7 +1172,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1190,7 +1190,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1205,7 +1205,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1353,6 +1353,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2017win10/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2017win10/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2017win10/libopenmpt.vcxproj =================================================================== --- build/vs2017win10/libopenmpt.vcxproj (revision 14776) +++ build/vs2017win10/libopenmpt.vcxproj (working copy) @@ -533,7 +533,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -556,7 +556,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -579,7 +579,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -601,7 +601,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -623,7 +623,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -652,7 +652,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -680,7 +680,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -708,7 +708,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -736,7 +736,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -765,7 +765,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -793,7 +793,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -821,7 +821,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -849,7 +849,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -860,7 +860,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -876,7 +876,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -887,7 +887,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -903,7 +903,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -914,7 +914,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -930,7 +930,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -941,7 +941,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -957,7 +957,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -973,7 +973,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -991,7 +991,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1006,7 +1006,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1024,7 +1024,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1039,7 +1039,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1057,7 +1057,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1072,7 +1072,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1090,7 +1090,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1106,7 +1106,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1124,7 +1124,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1139,7 +1139,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1157,7 +1157,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1172,7 +1172,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1190,7 +1190,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1205,7 +1205,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1353,6 +1353,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017win10/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2017win10/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2017win10/libopenmpt_test.vcxproj =================================================================== --- build/vs2017win10/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2017win10/libopenmpt_test.vcxproj (working copy) @@ -283,7 +283,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -306,7 +306,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -329,7 +329,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -351,7 +351,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -373,7 +373,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -402,7 +402,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -430,7 +430,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -458,7 +458,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -486,7 +486,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -515,7 +515,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -571,7 +571,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -729,6 +729,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -873,6 +968,16 @@ + + + + + + + + + + Index: build/vs2017win10/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2017win10/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2017win10/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win10/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2017win10/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2017win10/OpenMPT-ANSI.vcxproj (working copy) @@ -570,7 +570,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -582,7 +582,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -605,7 +605,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -617,7 +617,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -652,7 +652,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -674,7 +674,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -708,7 +708,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -725,7 +725,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -749,7 +749,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -765,7 +765,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -789,7 +789,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -805,7 +805,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -829,7 +829,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -845,7 +845,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -869,7 +869,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -886,7 +886,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -910,7 +910,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -926,7 +926,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -950,7 +950,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -966,7 +966,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -990,7 +990,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1006,7 +1006,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1064,7 +1064,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1076,7 +1076,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1098,7 +1098,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1110,7 +1110,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1132,7 +1132,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1144,7 +1144,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1166,7 +1166,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1183,7 +1183,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1207,7 +1207,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1223,7 +1223,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1247,7 +1247,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1263,7 +1263,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1287,7 +1287,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1303,7 +1303,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1327,7 +1327,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1344,7 +1344,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1368,7 +1368,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1384,7 +1384,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1408,7 +1408,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1424,7 +1424,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1448,7 +1448,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1464,7 +1464,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1746,6 +1746,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1782,8 +1884,6 @@ - - @@ -2021,6 +2121,18 @@ + + + + + + + + + + + + Index: build/vs2017win10/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2017win10/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win10/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2017win10/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2017win10/OpenMPT-NativeSupport.vcxproj (working copy) @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -570,7 +570,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -595,7 +595,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -619,7 +619,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -643,7 +643,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -674,7 +674,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -704,7 +704,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -734,7 +734,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -764,7 +764,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -795,7 +795,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -825,7 +825,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -855,7 +855,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -885,7 +885,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -909,7 +909,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -933,7 +933,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -957,7 +957,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -981,7 +981,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1012,7 +1012,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1042,7 +1042,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1072,7 +1072,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1102,7 +1102,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1133,7 +1133,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1163,7 +1163,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1193,7 +1193,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1301,6 +1301,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1324,8 +1426,6 @@ - - Index: build/vs2017win10/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2017win10/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2017win10/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2017win10/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2017win10/OpenMPT-UTF8.vcxproj (working copy) @@ -570,7 +570,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -582,7 +582,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -605,7 +605,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -617,7 +617,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -652,7 +652,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -674,7 +674,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -708,7 +708,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -725,7 +725,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -749,7 +749,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -765,7 +765,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -789,7 +789,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -805,7 +805,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -829,7 +829,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -845,7 +845,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -869,7 +869,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -886,7 +886,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -910,7 +910,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -926,7 +926,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -950,7 +950,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -966,7 +966,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -990,7 +990,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1006,7 +1006,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1064,7 +1064,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1076,7 +1076,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1098,7 +1098,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1110,7 +1110,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1132,7 +1132,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1144,7 +1144,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1166,7 +1166,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1183,7 +1183,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1207,7 +1207,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1223,7 +1223,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1247,7 +1247,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1263,7 +1263,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1287,7 +1287,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1303,7 +1303,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1327,7 +1327,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1344,7 +1344,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1368,7 +1368,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1384,7 +1384,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1408,7 +1408,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1424,7 +1424,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1448,7 +1448,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1464,7 +1464,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1746,6 +1746,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1782,8 +1884,6 @@ - - @@ -2021,6 +2121,18 @@ + + + + + + + + + + + + Index: build/vs2017win10/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2017win10/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win10/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2017win10/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2017win10/OpenMPT-WineWrapper.vcxproj (working copy) @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -569,7 +569,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -593,7 +593,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -616,7 +616,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -639,7 +639,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -669,7 +669,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -698,7 +698,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -727,7 +727,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -756,7 +756,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -786,7 +786,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -815,7 +815,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -844,7 +844,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -873,7 +873,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -896,7 +896,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -919,7 +919,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -942,7 +942,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -965,7 +965,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -995,7 +995,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1024,7 +1024,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1053,7 +1053,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1082,7 +1082,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1112,7 +1112,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1141,7 +1141,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1170,7 +1170,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2017win10/OpenMPT.vcxproj =================================================================== --- build/vs2017win10/OpenMPT.vcxproj (revision 14776) +++ build/vs2017win10/OpenMPT.vcxproj (working copy) @@ -570,7 +570,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -582,7 +582,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -605,7 +605,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -617,7 +617,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -652,7 +652,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -674,7 +674,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -708,7 +708,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -725,7 +725,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -749,7 +749,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -765,7 +765,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -789,7 +789,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -805,7 +805,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -829,7 +829,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -845,7 +845,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -869,7 +869,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -886,7 +886,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -910,7 +910,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -926,7 +926,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -950,7 +950,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -966,7 +966,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -990,7 +990,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1006,7 +1006,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1064,7 +1064,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1076,7 +1076,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1098,7 +1098,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1110,7 +1110,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1132,7 +1132,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1144,7 +1144,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1166,7 +1166,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1183,7 +1183,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1207,7 +1207,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1223,7 +1223,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1247,7 +1247,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1263,7 +1263,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1287,7 +1287,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1303,7 +1303,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1327,7 +1327,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1344,7 +1344,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1368,7 +1368,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1384,7 +1384,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1408,7 +1408,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1424,7 +1424,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1448,7 +1448,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1464,7 +1464,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1746,6 +1746,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1782,8 +1884,6 @@ - - @@ -2021,6 +2121,18 @@ + + + + + + + + + + + + Index: build/vs2017win10/OpenMPT.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2017win10/OpenMPT.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win10/openmpt123.vcxproj =================================================================== --- build/vs2017win10/openmpt123.vcxproj (revision 14776) +++ build/vs2017win10/openmpt123.vcxproj (working copy) @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -556,7 +556,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -574,7 +574,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -585,7 +585,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -603,7 +603,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -614,7 +614,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -631,7 +631,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -642,7 +642,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -659,7 +659,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -675,7 +675,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -694,7 +694,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -709,7 +709,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -728,7 +728,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -743,7 +743,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -762,7 +762,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -777,7 +777,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -796,7 +796,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -812,7 +812,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -831,7 +831,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -846,7 +846,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -865,7 +865,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -880,7 +880,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -899,7 +899,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -914,7 +914,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -933,7 +933,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -944,7 +944,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -961,7 +961,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -972,7 +972,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -989,7 +989,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1000,7 +1000,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1017,7 +1017,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1028,7 +1028,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1045,7 +1045,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1061,7 +1061,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1080,7 +1080,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1095,7 +1095,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1114,7 +1114,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1129,7 +1129,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1148,7 +1148,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1163,7 +1163,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1182,7 +1182,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1198,7 +1198,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1217,7 +1217,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1232,7 +1232,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1251,7 +1251,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1266,7 +1266,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1285,7 +1285,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1300,7 +1300,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1327,6 +1327,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/openmpt123.vcxproj.filters =================================================================== --- build/vs2017win10/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2017win10/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2017win10/PluginBridge.vcxproj =================================================================== --- build/vs2017win10/PluginBridge.vcxproj (revision 14776) +++ build/vs2017win10/PluginBridge.vcxproj (working copy) @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -556,7 +556,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -577,7 +577,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -588,7 +588,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -609,7 +609,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -620,7 +620,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -651,7 +651,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -671,7 +671,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -687,7 +687,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -709,7 +709,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -724,7 +724,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -746,7 +746,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -761,7 +761,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -783,7 +783,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -798,7 +798,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -820,7 +820,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -836,7 +836,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -858,7 +858,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -873,7 +873,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -895,7 +895,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -910,7 +910,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -932,7 +932,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -947,7 +947,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -969,7 +969,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -980,7 +980,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1000,7 +1000,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1011,7 +1011,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1031,7 +1031,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1062,7 +1062,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1073,7 +1073,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1093,7 +1093,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1109,7 +1109,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1131,7 +1131,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1146,7 +1146,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1168,7 +1168,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1183,7 +1183,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1205,7 +1205,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1220,7 +1220,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1242,7 +1242,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1258,7 +1258,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1280,7 +1280,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1295,7 +1295,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1317,7 +1317,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1332,7 +1332,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1354,7 +1354,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1369,7 +1369,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1393,6 +1393,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/PluginBridge.vcxproj.filters =================================================================== --- build/vs2017win10/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2017win10/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2017win10/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2017win10/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2017win10/PluginBridgeLegacy.vcxproj (working copy) @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -556,7 +556,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -577,7 +577,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -588,7 +588,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -610,7 +610,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -621,7 +621,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -651,7 +651,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -671,7 +671,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -687,7 +687,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -709,7 +709,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -724,7 +724,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -747,7 +747,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -762,7 +762,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -783,7 +783,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -798,7 +798,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -820,7 +820,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -836,7 +836,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -858,7 +858,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -873,7 +873,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -896,7 +896,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -911,7 +911,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -932,7 +932,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -947,7 +947,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -969,7 +969,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -980,7 +980,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1000,7 +1000,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1011,7 +1011,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1032,7 +1032,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1043,7 +1043,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1062,7 +1062,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1073,7 +1073,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1093,7 +1093,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1109,7 +1109,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1131,7 +1131,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1146,7 +1146,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1169,7 +1169,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1184,7 +1184,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1205,7 +1205,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1220,7 +1220,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1242,7 +1242,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1258,7 +1258,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1280,7 +1280,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1295,7 +1295,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1318,7 +1318,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1333,7 +1333,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1354,7 +1354,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1369,7 +1369,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1393,6 +1393,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2017win10/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2017win10/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2017win10/signtool.vcxproj =================================================================== --- build/vs2017win10/signtool.vcxproj (revision 14776) +++ build/vs2017win10/signtool.vcxproj (working copy) @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -569,7 +569,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -593,7 +593,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -616,7 +616,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -639,7 +639,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -669,7 +669,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -698,7 +698,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -727,7 +727,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -756,7 +756,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -786,7 +786,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -815,7 +815,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -844,7 +844,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -873,7 +873,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -896,7 +896,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -919,7 +919,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -942,7 +942,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -965,7 +965,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -995,7 +995,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1024,7 +1024,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1053,7 +1053,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1082,7 +1082,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1112,7 +1112,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1141,7 +1141,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1170,7 +1170,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1242,6 +1242,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1266,8 +1368,6 @@ - - Index: build/vs2017win10/signtool.vcxproj.filters =================================================================== --- build/vs2017win10/signtool.vcxproj.filters (revision 14776) +++ build/vs2017win10/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/vs2017win7/libopenmpt-small.vcxproj =================================================================== --- build/vs2017win7/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2017win7/libopenmpt-small.vcxproj (working copy) @@ -270,7 +270,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -292,7 +292,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -314,7 +314,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -342,7 +342,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -369,7 +369,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -397,7 +397,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -424,7 +424,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -434,7 +434,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -450,7 +450,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -460,7 +460,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -476,7 +476,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -491,7 +491,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -509,7 +509,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -523,7 +523,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -541,7 +541,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -556,7 +556,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -574,7 +574,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -588,7 +588,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -736,6 +736,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2017win7/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2017win7/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2017win7/libopenmpt.vcxproj =================================================================== --- build/vs2017win7/libopenmpt.vcxproj (revision 14776) +++ build/vs2017win7/libopenmpt.vcxproj (working copy) @@ -270,7 +270,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -292,7 +292,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -314,7 +314,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -342,7 +342,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -369,7 +369,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -397,7 +397,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -424,7 +424,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -434,7 +434,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -450,7 +450,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -460,7 +460,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -476,7 +476,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -491,7 +491,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -509,7 +509,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -523,7 +523,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -541,7 +541,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -556,7 +556,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -574,7 +574,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -588,7 +588,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -736,6 +736,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017win7/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2017win7/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2017win7/libopenmpt_test.vcxproj =================================================================== --- build/vs2017win7/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2017win7/libopenmpt_test.vcxproj (working copy) @@ -148,7 +148,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -170,7 +170,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -192,7 +192,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -220,7 +220,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -247,7 +247,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -432,6 +432,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -576,6 +671,16 @@ + + + + + + + + + + Index: build/vs2017win7/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2017win7/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2017win7/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win7/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2017win7/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2017win7/OpenMPT-ANSI.vcxproj (working copy) @@ -289,7 +289,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -334,7 +334,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -357,7 +357,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -373,7 +373,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -397,7 +397,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -412,7 +412,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -436,7 +436,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -452,7 +452,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -476,7 +476,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -491,7 +491,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -515,7 +515,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -526,7 +526,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -548,7 +548,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -559,7 +559,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -581,7 +581,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -597,7 +597,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -621,7 +621,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -636,7 +636,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -660,7 +660,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -676,7 +676,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -700,7 +700,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -715,7 +715,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -997,6 +997,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1033,8 +1135,6 @@ - - @@ -1272,6 +1372,18 @@ + + + + + + + + + + + + Index: build/vs2017win7/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2017win7/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win7/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2017win7/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2017win7/OpenMPT-NativeSupport.vcxproj (working copy) @@ -276,7 +276,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -300,7 +300,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -324,7 +324,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -354,7 +354,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -383,7 +383,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -413,7 +413,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -442,7 +442,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -465,7 +465,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -488,7 +488,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -518,7 +518,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -547,7 +547,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -577,7 +577,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -684,6 +684,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -707,8 +809,6 @@ - - Index: build/vs2017win7/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2017win7/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2017win7/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2017win7/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2017win7/OpenMPT-UTF8.vcxproj (working copy) @@ -289,7 +289,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -334,7 +334,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -357,7 +357,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -373,7 +373,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -397,7 +397,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -412,7 +412,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -436,7 +436,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -452,7 +452,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -476,7 +476,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -491,7 +491,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -515,7 +515,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -526,7 +526,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -548,7 +548,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -559,7 +559,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -581,7 +581,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -597,7 +597,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -621,7 +621,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -636,7 +636,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -660,7 +660,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -676,7 +676,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -700,7 +700,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -715,7 +715,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -997,6 +997,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1033,8 +1135,6 @@ - - @@ -1272,6 +1372,18 @@ + + + + + + + + + + + + Index: build/vs2017win7/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2017win7/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win7/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2017win7/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2017win7/OpenMPT-WineWrapper.vcxproj (working copy) @@ -276,7 +276,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -299,7 +299,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -322,7 +322,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -351,7 +351,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -379,7 +379,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -408,7 +408,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -436,7 +436,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -458,7 +458,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -480,7 +480,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -509,7 +509,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -537,7 +537,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -566,7 +566,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2017win7/OpenMPT.vcxproj =================================================================== --- build/vs2017win7/OpenMPT.vcxproj (revision 14776) +++ build/vs2017win7/OpenMPT.vcxproj (working copy) @@ -289,7 +289,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -334,7 +334,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -357,7 +357,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -373,7 +373,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -397,7 +397,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -412,7 +412,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -436,7 +436,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -452,7 +452,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -476,7 +476,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -491,7 +491,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -515,7 +515,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -526,7 +526,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -548,7 +548,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -559,7 +559,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -581,7 +581,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -597,7 +597,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -621,7 +621,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -636,7 +636,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -660,7 +660,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -676,7 +676,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -700,7 +700,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -715,7 +715,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -997,6 +997,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1033,8 +1135,6 @@ - - @@ -1272,6 +1372,18 @@ + + + + + + + + + + + + Index: build/vs2017win7/OpenMPT.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2017win7/OpenMPT.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017win7/openmpt123.vcxproj =================================================================== --- build/vs2017win7/openmpt123.vcxproj (revision 14776) +++ build/vs2017win7/openmpt123.vcxproj (working copy) @@ -276,7 +276,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -304,7 +304,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -314,7 +314,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -332,7 +332,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -347,7 +347,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -366,7 +366,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -380,7 +380,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -399,7 +399,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -414,7 +414,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -433,7 +433,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -447,7 +447,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -466,7 +466,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -476,7 +476,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -493,7 +493,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -503,7 +503,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -520,7 +520,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -535,7 +535,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -554,7 +554,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -568,7 +568,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -587,7 +587,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -602,7 +602,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -621,7 +621,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -635,7 +635,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -662,6 +662,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/openmpt123.vcxproj.filters =================================================================== --- build/vs2017win7/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2017win7/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2017win7/PluginBridge.vcxproj =================================================================== --- build/vs2017win7/PluginBridge.vcxproj (revision 14776) +++ build/vs2017win7/PluginBridge.vcxproj (working copy) @@ -276,7 +276,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -307,7 +307,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -317,7 +317,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -338,7 +338,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -353,7 +353,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -375,7 +375,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -389,7 +389,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -411,7 +411,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -426,7 +426,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -448,7 +448,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -462,7 +462,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -484,7 +484,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -494,7 +494,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -514,7 +514,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -524,7 +524,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -544,7 +544,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -559,7 +559,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -581,7 +581,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -595,7 +595,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -617,7 +617,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -632,7 +632,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -654,7 +654,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -668,7 +668,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -692,6 +692,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/PluginBridge.vcxproj.filters =================================================================== --- build/vs2017win7/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2017win7/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2017win7/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2017win7/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2017win7/PluginBridgeLegacy.vcxproj (working copy) @@ -276,7 +276,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -307,7 +307,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -317,7 +317,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -339,7 +339,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -354,7 +354,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -376,7 +376,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -390,7 +390,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -413,7 +413,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -428,7 +428,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -450,7 +450,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -464,7 +464,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -487,7 +487,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -497,7 +497,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -517,7 +517,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -527,7 +527,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -548,7 +548,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -563,7 +563,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -585,7 +585,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -599,7 +599,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -622,7 +622,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -637,7 +637,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -659,7 +659,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -673,7 +673,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -698,6 +698,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2017win7/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2017win7/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2017win7/signtool.vcxproj =================================================================== --- build/vs2017win7/signtool.vcxproj (revision 14776) +++ build/vs2017win7/signtool.vcxproj (working copy) @@ -276,7 +276,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -299,7 +299,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -322,7 +322,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -351,7 +351,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -379,7 +379,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -408,7 +408,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -436,7 +436,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -458,7 +458,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -480,7 +480,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -509,7 +509,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -537,7 +537,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -566,7 +566,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -637,6 +637,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -661,8 +763,6 @@ - - Index: build/vs2017win7/signtool.vcxproj.filters =================================================================== --- build/vs2017win7/signtool.vcxproj.filters (revision 14776) +++ build/vs2017win7/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/vs2017winxp/libopenmpt-small.vcxproj =================================================================== --- build/vs2017winxp/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2017winxp/libopenmpt-small.vcxproj (working copy) @@ -258,7 +258,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -282,7 +282,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -305,7 +305,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -334,7 +334,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -362,7 +362,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -391,7 +391,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -419,7 +419,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -431,7 +431,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -447,7 +447,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -458,7 +458,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -474,7 +474,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -490,7 +490,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -508,7 +508,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -523,7 +523,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -541,7 +541,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -557,7 +557,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -575,7 +575,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -590,7 +590,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -738,6 +738,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2017winxp/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2017winxp/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2017winxp/libopenmpt.vcxproj =================================================================== --- build/vs2017winxp/libopenmpt.vcxproj (revision 14776) +++ build/vs2017winxp/libopenmpt.vcxproj (working copy) @@ -258,7 +258,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -282,7 +282,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -305,7 +305,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -334,7 +334,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -362,7 +362,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -391,7 +391,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -419,7 +419,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -431,7 +431,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -447,7 +447,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -458,7 +458,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -474,7 +474,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -490,7 +490,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -508,7 +508,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -523,7 +523,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -541,7 +541,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -557,7 +557,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -575,7 +575,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -590,7 +590,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -738,6 +738,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017winxp/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2017winxp/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2017winxp/libopenmpt_test.vcxproj =================================================================== --- build/vs2017winxp/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2017winxp/libopenmpt_test.vcxproj (working copy) @@ -142,7 +142,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -166,7 +166,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -189,7 +189,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -218,7 +218,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -246,7 +246,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -275,7 +275,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -433,6 +433,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577,6 +672,16 @@ + + + + + + + + + + Index: build/vs2017winxp/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2017winxp/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2017winxp/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017winxp/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2017winxp/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2017winxp/OpenMPT-ANSI.vcxproj (working copy) @@ -277,7 +277,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -290,7 +290,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -312,7 +312,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -324,7 +324,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -346,7 +346,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -363,7 +363,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -386,7 +386,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -402,7 +402,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -425,7 +425,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -442,7 +442,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -465,7 +465,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -481,7 +481,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -504,7 +504,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -517,7 +517,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -538,7 +538,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -550,7 +550,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -588,7 +588,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -611,7 +611,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -627,7 +627,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -650,7 +650,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -667,7 +667,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -690,7 +690,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -706,7 +706,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -978,6 +978,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1014,8 +1116,6 @@ - - @@ -1253,6 +1353,18 @@ + + + + + + + + + + + + Index: build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -49,6 +49,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -822,6 +930,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -926,12 +1340,6 @@ misc - - misc - - - misc - misc @@ -1643,6 +2051,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017winxp/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2017winxp/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2017winxp/OpenMPT-NativeSupport.vcxproj (working copy) @@ -264,7 +264,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -290,7 +290,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -346,7 +346,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -376,7 +376,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -407,7 +407,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -437,7 +437,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -462,7 +462,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -486,7 +486,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -517,7 +517,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -547,7 +547,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -578,7 +578,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -686,6 +686,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -709,8 +811,6 @@ - - Index: build/vs2017winxp/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2017winxp/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2017winxp/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2017winxp/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2017winxp/OpenMPT-UTF8.vcxproj (working copy) @@ -277,7 +277,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -290,7 +290,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -312,7 +312,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -324,7 +324,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -346,7 +346,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -363,7 +363,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -386,7 +386,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -402,7 +402,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -425,7 +425,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -442,7 +442,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -465,7 +465,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -481,7 +481,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -504,7 +504,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -517,7 +517,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -538,7 +538,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -550,7 +550,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -588,7 +588,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -611,7 +611,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -627,7 +627,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -650,7 +650,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -667,7 +667,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -690,7 +690,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -706,7 +706,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -978,6 +978,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1014,8 +1116,6 @@ - - @@ -1253,6 +1353,18 @@ + + + + + + + + + + + + Index: build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -49,6 +49,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -822,6 +930,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -926,12 +1340,6 @@ misc - - misc - - - misc - misc @@ -1643,6 +2051,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017winxp/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2017winxp/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2017winxp/OpenMPT-WineWrapper.vcxproj (working copy) @@ -264,7 +264,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -289,7 +289,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -313,7 +313,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -343,7 +343,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -372,7 +372,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -402,7 +402,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -431,7 +431,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -455,7 +455,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -478,7 +478,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -508,7 +508,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -537,7 +537,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -567,7 +567,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2017winxp/OpenMPT.vcxproj =================================================================== --- build/vs2017winxp/OpenMPT.vcxproj (revision 14776) +++ build/vs2017winxp/OpenMPT.vcxproj (working copy) @@ -277,7 +277,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -290,7 +290,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -312,7 +312,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -324,7 +324,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -346,7 +346,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -363,7 +363,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -386,7 +386,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -402,7 +402,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -425,7 +425,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -442,7 +442,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -465,7 +465,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -481,7 +481,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -504,7 +504,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -517,7 +517,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -538,7 +538,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -550,7 +550,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -588,7 +588,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -611,7 +611,7 @@ PCH.h Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -627,7 +627,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -650,7 +650,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -667,7 +667,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -690,7 +690,7 @@ PCH.h Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -706,7 +706,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -978,6 +978,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1014,8 +1116,6 @@ - - @@ -1253,6 +1353,18 @@ + + + + + + + + + + + + Index: build/vs2017winxp/OpenMPT.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2017winxp/OpenMPT.vcxproj.filters (working copy) @@ -49,6 +49,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -822,6 +930,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -926,12 +1340,6 @@ misc - - misc - - - misc - misc @@ -1643,6 +2051,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2017winxp/openmpt123.vcxproj =================================================================== --- build/vs2017winxp/openmpt123.vcxproj (revision 14776) +++ build/vs2017winxp/openmpt123.vcxproj (working copy) @@ -264,7 +264,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -276,7 +276,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -294,7 +294,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -305,7 +305,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -323,7 +323,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -339,7 +339,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -358,7 +358,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -373,7 +373,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -392,7 +392,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -408,7 +408,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -427,7 +427,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -442,7 +442,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -461,7 +461,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -473,7 +473,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -490,7 +490,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -501,7 +501,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -518,7 +518,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -534,7 +534,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -553,7 +553,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -568,7 +568,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -587,7 +587,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -603,7 +603,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -622,7 +622,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -637,7 +637,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -664,6 +664,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/openmpt123.vcxproj.filters =================================================================== --- build/vs2017winxp/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2017winxp/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2017winxp/PluginBridge.vcxproj =================================================================== --- build/vs2017winxp/PluginBridge.vcxproj (revision 14776) +++ build/vs2017winxp/PluginBridge.vcxproj (working copy) @@ -264,7 +264,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -276,7 +276,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -296,7 +296,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -307,7 +307,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -327,7 +327,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -343,7 +343,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -364,7 +364,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -379,7 +379,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -400,7 +400,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -416,7 +416,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -437,7 +437,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -452,7 +452,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -473,7 +473,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -485,7 +485,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -504,7 +504,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -515,7 +515,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -534,7 +534,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -550,7 +550,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -586,7 +586,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -607,7 +607,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -623,7 +623,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -644,7 +644,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -659,7 +659,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -682,6 +682,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/PluginBridge.vcxproj.filters =================================================================== --- build/vs2017winxp/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2017winxp/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2017winxp/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2017winxp/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2017winxp/PluginBridgeLegacy.vcxproj (working copy) @@ -264,7 +264,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -276,7 +276,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -297,7 +297,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -308,7 +308,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -330,7 +330,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -346,7 +346,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -368,7 +368,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -383,7 +383,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -406,7 +406,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -422,7 +422,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -444,7 +444,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -459,7 +459,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -482,7 +482,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -494,7 +494,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -514,7 +514,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -525,7 +525,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -546,7 +546,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -562,7 +562,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -584,7 +584,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -599,7 +599,7 @@ MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -622,7 +622,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -638,7 +638,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -660,7 +660,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -675,7 +675,7 @@ MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -700,6 +700,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2017winxp/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2017winxp/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2017winxp/signtool.vcxproj =================================================================== --- build/vs2017winxp/signtool.vcxproj (revision 14776) +++ build/vs2017winxp/signtool.vcxproj (working copy) @@ -264,7 +264,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -289,7 +289,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -313,7 +313,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -343,7 +343,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -372,7 +372,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -402,7 +402,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -431,7 +431,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -455,7 +455,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -478,7 +478,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -508,7 +508,7 @@ NotUsing Level4 MPT_BUILD_RETRO;NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -537,7 +537,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0501;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -567,7 +567,7 @@ NotUsing Level4 MPT_BUILD_RETRO;DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0502;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -639,6 +639,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -663,8 +765,6 @@ - - Index: build/vs2017winxp/signtool.vcxproj.filters =================================================================== --- build/vs2017winxp/signtool.vcxproj.filters (revision 14776) +++ build/vs2017winxp/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/vs2019uwp/libopenmpt.vcxproj =================================================================== --- build/vs2019uwp/libopenmpt.vcxproj (revision 14776) +++ build/vs2019uwp/libopenmpt.vcxproj (working copy) @@ -390,7 +390,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -406,7 +406,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -425,7 +425,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -441,7 +441,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -460,7 +460,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -476,7 +476,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -494,7 +494,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -510,7 +510,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -528,7 +528,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -545,7 +545,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -566,7 +566,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -583,7 +583,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -604,7 +604,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -621,7 +621,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -641,7 +641,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -658,7 +658,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) $(OutDir)libopenmpt.lib @@ -678,7 +678,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -694,7 +694,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -713,7 +713,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -729,7 +729,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -748,7 +748,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -764,7 +764,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -782,7 +782,7 @@ %(AdditionalOptions) Disabled - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -798,7 +798,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -816,7 +816,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -833,7 +833,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -854,7 +854,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -871,7 +871,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -892,7 +892,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -909,7 +909,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -929,7 +929,7 @@ %(AdditionalOptions) MaxSpeed - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) false true @@ -946,7 +946,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD_DLL;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -963,6 +963,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + + + + true + + + true + Index: build/vs2019uwp/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019uwp/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2019uwp/libopenmpt.vcxproj.filters (working copy) @@ -1,6 +1,114 @@ + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {1ACB48A9-86AA-C744-8FC2-521BFB202EA6} + + + {B102DE80-9D65-6D25-46EB-A5DB322D39A8} + + + {A092E23B-8C76-A391-F5D6-9DE4E1D98D13} + + + {3B77F730-2745-EB36-10D9-5B5DFC45C79B} + + + {AAC627BD-9655-B186-3F74-C5812BE2C12C} + + + {940CB49C-00CD-2FD3-C907-7950358774AF} + + + {2EEFC068-9AA4-395E-2399-33358F4D3062} + + + {DD28764B-493F-74E1-92B6-FF02FE0B4569} + + + {97C4F533-8392-E939-6C26-5A605893C59E} + + + {06A9D974-F237-633E-9B56-773987C473E4} + + + {CFBF5C35-BB8D-503B-A421-C161908E2CA0} + + + {A50F4C38-91DD-3F3E-7A71-B06466DE1BA3} + + + {94862B67-8015-B530-2934-C92B15A2C5D6} + + + {4BCBC71D-B72C-A52B-409A-EBDDACFADBEA} + + + {C9C6093D-B5C0-328F-9E2D-C99F8AC698FB} + + + {1F0FBB3A-0BDD-AE40-F470-1F67E0DD8AA5} + + + {8EB9DEF5-7A48-68BF-2367-7CBA0FD57865} + + + {D0B1E280-BC14-7225-659A-AADB51DC3DA8} + + + {A962709D-1523-ECD3-DE5D-35514ADD30B0} + + + {44F4FC4F-30C2-F055-1956-617C05C3CCBA} + + + {3AB0B2BD-A61C-6EB8-6F10-0616DB3B9020} + + + {D1AD9B9D-3D6E-17D4-06A9-605172285CB0} + + + {C0153CF8-2C77-1906-B5E4-5FB8214550C5} + + + {9749B955-8317-AD5B-6CAB-1D82581889C0} + + + {06EE6C9E-F27C-F667-9B9B-0A638709070E} + + + {6D8A6859-5958-5C5F-42EC-CC852E5938C4} + + + {5CF7BA51-4886-441B-F1A4-5816DD1255C1} + + + {4DBC776B-39B6-A0BD-2223-37CE0EBC062A} + + + {3C11A0B3-28CC-8F5F-D183-08AABD1DDAEF} + + + {C4047277-B093-FB40-59B2-0F3C45200CE7} + + + {96F2E780-8255-7725-2BDB-AFDB171D43A8} + + + {ADC1E880-9924-7825-42AA-B0DB2EEC43A8} + + + {9C9ED71A-8882-9870-F1E2-92C3DDE582F2} + + + {B98C0F94-A586-38E6-8EF3-CEF67A8C9E52} + + + {A882657C-943D-5528-3DF5-CD72298F9FB8} + {AEFEE3F6-9AA0-0ECD-835B-22216F9C951D} @@ -24,6 +132,312 @@ + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid_namespace + + + src\mpt\uuid_namespace\tests + common Index: build/vs2019win10/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win10/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2019win10/libopenmpt-small.vcxproj (working copy) @@ -531,7 +531,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -577,7 +577,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -599,7 +599,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -621,7 +621,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -650,7 +650,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -678,7 +678,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -706,7 +706,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -734,7 +734,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -763,7 +763,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -791,7 +791,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -819,7 +819,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -847,7 +847,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -858,7 +858,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -874,7 +874,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -885,7 +885,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -901,7 +901,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -912,7 +912,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -928,7 +928,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -939,7 +939,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -955,7 +955,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -971,7 +971,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -989,7 +989,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1004,7 +1004,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1022,7 +1022,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1037,7 +1037,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1055,7 +1055,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1070,7 +1070,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1088,7 +1088,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1104,7 +1104,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1122,7 +1122,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1137,7 +1137,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1155,7 +1155,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1170,7 +1170,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1188,7 +1188,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1203,7 +1203,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1351,6 +1351,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win10/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2019win10/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win10/libopenmpt.vcxproj =================================================================== --- build/vs2019win10/libopenmpt.vcxproj (revision 14776) +++ build/vs2019win10/libopenmpt.vcxproj (working copy) @@ -531,7 +531,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -577,7 +577,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -599,7 +599,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -621,7 +621,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -650,7 +650,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -678,7 +678,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -706,7 +706,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -734,7 +734,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -763,7 +763,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -791,7 +791,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -819,7 +819,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -847,7 +847,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -858,7 +858,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -874,7 +874,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -885,7 +885,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -901,7 +901,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -912,7 +912,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -928,7 +928,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -939,7 +939,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -955,7 +955,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -971,7 +971,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -989,7 +989,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1004,7 +1004,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1022,7 +1022,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1037,7 +1037,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1055,7 +1055,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1070,7 +1070,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1088,7 +1088,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1104,7 +1104,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1122,7 +1122,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1137,7 +1137,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1155,7 +1155,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1170,7 +1170,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1188,7 +1188,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1203,7 +1203,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1351,6 +1351,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win10/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2019win10/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win10/libopenmpt_test.vcxproj =================================================================== --- build/vs2019win10/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2019win10/libopenmpt_test.vcxproj (working copy) @@ -281,7 +281,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -304,7 +304,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -327,7 +327,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -349,7 +349,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -371,7 +371,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -400,7 +400,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -428,7 +428,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -456,7 +456,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -484,7 +484,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -513,7 +513,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -541,7 +541,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -569,7 +569,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -727,6 +727,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -871,6 +966,16 @@ + + + + + + + + + + Index: build/vs2019win10/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win10/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2019win10/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2019win10/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2019win10/OpenMPT-ANSI.vcxproj (working copy) @@ -568,7 +568,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -580,7 +580,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -603,7 +603,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -615,7 +615,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -638,7 +638,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -650,7 +650,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -672,7 +672,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -684,7 +684,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -706,7 +706,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -723,7 +723,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -747,7 +747,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -763,7 +763,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -787,7 +787,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -803,7 +803,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -827,7 +827,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -843,7 +843,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -867,7 +867,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -884,7 +884,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -908,7 +908,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -924,7 +924,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -948,7 +948,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -964,7 +964,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -988,7 +988,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1004,7 +1004,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1028,7 +1028,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1040,7 +1040,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1062,7 +1062,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1074,7 +1074,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1096,7 +1096,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1108,7 +1108,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1130,7 +1130,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1142,7 +1142,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1164,7 +1164,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1181,7 +1181,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1205,7 +1205,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1221,7 +1221,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1245,7 +1245,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1261,7 +1261,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1285,7 +1285,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1301,7 +1301,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1325,7 +1325,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1342,7 +1342,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1366,7 +1366,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1382,7 +1382,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1406,7 +1406,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1422,7 +1422,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1446,7 +1446,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1462,7 +1462,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1744,6 +1744,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1780,8 +1882,6 @@ - - @@ -2019,6 +2119,18 @@ + + + + + + + + + + + + Index: build/vs2019win10/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2019win10/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2019win10/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2019win10/OpenMPT-NativeSupport.vcxproj (working copy) @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -568,7 +568,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -593,7 +593,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -617,7 +617,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -641,7 +641,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -672,7 +672,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -702,7 +702,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -732,7 +732,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -762,7 +762,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -793,7 +793,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -823,7 +823,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -853,7 +853,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -883,7 +883,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -907,7 +907,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -931,7 +931,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -955,7 +955,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -979,7 +979,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1010,7 +1010,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1040,7 +1040,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1070,7 +1070,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1100,7 +1100,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1131,7 +1131,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1161,7 +1161,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1191,7 +1191,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1299,6 +1299,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1322,8 +1424,6 @@ - - Index: build/vs2019win10/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2019win10/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win10/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win10/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2019win10/OpenMPT-UTF8.vcxproj (working copy) @@ -568,7 +568,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -580,7 +580,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -603,7 +603,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -615,7 +615,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -638,7 +638,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -650,7 +650,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -672,7 +672,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -684,7 +684,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -706,7 +706,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -723,7 +723,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -747,7 +747,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -763,7 +763,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -787,7 +787,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -803,7 +803,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -827,7 +827,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -843,7 +843,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -867,7 +867,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -884,7 +884,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -908,7 +908,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -924,7 +924,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -948,7 +948,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -964,7 +964,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -988,7 +988,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1004,7 +1004,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1028,7 +1028,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1040,7 +1040,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1062,7 +1062,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1074,7 +1074,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1096,7 +1096,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1108,7 +1108,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1130,7 +1130,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1142,7 +1142,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1164,7 +1164,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1181,7 +1181,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1205,7 +1205,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1221,7 +1221,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1245,7 +1245,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1261,7 +1261,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1285,7 +1285,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1301,7 +1301,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1325,7 +1325,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1342,7 +1342,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1366,7 +1366,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1382,7 +1382,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1406,7 +1406,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1422,7 +1422,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1446,7 +1446,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1462,7 +1462,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1744,6 +1744,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1780,8 +1882,6 @@ - - @@ -2019,6 +2119,18 @@ + + + + + + + + + + + + Index: build/vs2019win10/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2019win10/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2019win10/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2019win10/OpenMPT-WineWrapper.vcxproj (working copy) @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -567,7 +567,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -591,7 +591,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -614,7 +614,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -637,7 +637,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -667,7 +667,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -696,7 +696,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -725,7 +725,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -754,7 +754,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -784,7 +784,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -813,7 +813,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -842,7 +842,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -871,7 +871,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -894,7 +894,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -917,7 +917,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -940,7 +940,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -963,7 +963,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -993,7 +993,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1022,7 +1022,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1051,7 +1051,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1080,7 +1080,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1110,7 +1110,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1139,7 +1139,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1168,7 +1168,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2019win10/OpenMPT.vcxproj =================================================================== --- build/vs2019win10/OpenMPT.vcxproj (revision 14776) +++ build/vs2019win10/OpenMPT.vcxproj (working copy) @@ -568,7 +568,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -580,7 +580,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -603,7 +603,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -615,7 +615,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -638,7 +638,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -650,7 +650,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -672,7 +672,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -684,7 +684,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -706,7 +706,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -723,7 +723,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -747,7 +747,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -763,7 +763,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -787,7 +787,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -803,7 +803,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -827,7 +827,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -843,7 +843,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -867,7 +867,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -884,7 +884,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -908,7 +908,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -924,7 +924,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -948,7 +948,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -964,7 +964,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -988,7 +988,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1004,7 +1004,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1028,7 +1028,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1040,7 +1040,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1062,7 +1062,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1074,7 +1074,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1096,7 +1096,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1108,7 +1108,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1130,7 +1130,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1142,7 +1142,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1164,7 +1164,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1181,7 +1181,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1205,7 +1205,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1221,7 +1221,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1245,7 +1245,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1261,7 +1261,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1285,7 +1285,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1301,7 +1301,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1325,7 +1325,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1342,7 +1342,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1366,7 +1366,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1382,7 +1382,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1406,7 +1406,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1422,7 +1422,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1446,7 +1446,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1462,7 +1462,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1744,6 +1744,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1780,8 +1882,6 @@ - - @@ -2019,6 +2119,18 @@ + + + + + + + + + + + + Index: build/vs2019win10/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2019win10/OpenMPT.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10/openmpt123.vcxproj =================================================================== --- build/vs2019win10/openmpt123.vcxproj (revision 14776) +++ build/vs2019win10/openmpt123.vcxproj (working copy) @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -572,7 +572,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -583,7 +583,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -601,7 +601,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -612,7 +612,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -629,7 +629,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -640,7 +640,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -657,7 +657,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -673,7 +673,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -692,7 +692,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -707,7 +707,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -726,7 +726,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -741,7 +741,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -760,7 +760,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -775,7 +775,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -794,7 +794,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -810,7 +810,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -829,7 +829,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -844,7 +844,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -863,7 +863,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -878,7 +878,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -897,7 +897,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -912,7 +912,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -931,7 +931,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -942,7 +942,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -959,7 +959,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -970,7 +970,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -987,7 +987,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -998,7 +998,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1015,7 +1015,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1026,7 +1026,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1043,7 +1043,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1059,7 +1059,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1078,7 +1078,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1093,7 +1093,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1112,7 +1112,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1127,7 +1127,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1146,7 +1146,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1161,7 +1161,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1180,7 +1180,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1196,7 +1196,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1215,7 +1215,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1230,7 +1230,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1249,7 +1249,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1264,7 +1264,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1283,7 +1283,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1298,7 +1298,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1325,6 +1325,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/openmpt123.vcxproj.filters =================================================================== --- build/vs2019win10/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2019win10/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2019win10/PluginBridge.vcxproj =================================================================== --- build/vs2019win10/PluginBridge.vcxproj (revision 14776) +++ build/vs2019win10/PluginBridge.vcxproj (working copy) @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -575,7 +575,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -586,7 +586,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -607,7 +607,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -618,7 +618,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -638,7 +638,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -649,7 +649,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -685,7 +685,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -707,7 +707,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -722,7 +722,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -744,7 +744,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -759,7 +759,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -781,7 +781,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -796,7 +796,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -818,7 +818,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -834,7 +834,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -856,7 +856,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -871,7 +871,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -893,7 +893,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -908,7 +908,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -930,7 +930,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -945,7 +945,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -967,7 +967,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -978,7 +978,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -998,7 +998,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1009,7 +1009,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1029,7 +1029,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1040,7 +1040,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1060,7 +1060,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1071,7 +1071,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1091,7 +1091,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1107,7 +1107,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1129,7 +1129,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1144,7 +1144,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1166,7 +1166,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1181,7 +1181,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1203,7 +1203,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1218,7 +1218,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1240,7 +1240,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1256,7 +1256,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1278,7 +1278,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1293,7 +1293,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1315,7 +1315,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1330,7 +1330,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1352,7 +1352,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1367,7 +1367,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1391,6 +1391,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/PluginBridge.vcxproj.filters =================================================================== --- build/vs2019win10/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2019win10/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win10/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2019win10/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2019win10/PluginBridgeLegacy.vcxproj (working copy) @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -575,7 +575,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -586,7 +586,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -608,7 +608,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -619,7 +619,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -638,7 +638,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -649,7 +649,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -685,7 +685,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -707,7 +707,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -722,7 +722,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -745,7 +745,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -760,7 +760,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -781,7 +781,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -796,7 +796,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -818,7 +818,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -834,7 +834,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -856,7 +856,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -871,7 +871,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -894,7 +894,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -909,7 +909,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -930,7 +930,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -945,7 +945,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -967,7 +967,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -978,7 +978,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -998,7 +998,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1009,7 +1009,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1041,7 +1041,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1060,7 +1060,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1071,7 +1071,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1091,7 +1091,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1107,7 +1107,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1129,7 +1129,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1144,7 +1144,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1167,7 +1167,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1182,7 +1182,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1203,7 +1203,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1218,7 +1218,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1240,7 +1240,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1256,7 +1256,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1278,7 +1278,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1293,7 +1293,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1316,7 +1316,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1331,7 +1331,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1352,7 +1352,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1367,7 +1367,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1391,6 +1391,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2019win10/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2019win10/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win10/signtool.vcxproj =================================================================== --- build/vs2019win10/signtool.vcxproj (revision 14776) +++ build/vs2019win10/signtool.vcxproj (working copy) @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -567,7 +567,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -591,7 +591,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -614,7 +614,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -637,7 +637,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -667,7 +667,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -696,7 +696,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -725,7 +725,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -754,7 +754,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -784,7 +784,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -813,7 +813,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -842,7 +842,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -871,7 +871,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -894,7 +894,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -917,7 +917,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -940,7 +940,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -963,7 +963,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -993,7 +993,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1022,7 +1022,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1051,7 +1051,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1080,7 +1080,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1110,7 +1110,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1139,7 +1139,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1168,7 +1168,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1240,6 +1240,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1264,8 +1366,6 @@ - - Index: build/vs2019win10/signtool.vcxproj.filters =================================================================== --- build/vs2019win10/signtool.vcxproj.filters (revision 14776) +++ build/vs2019win10/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win10clangcl/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win10clangcl/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2019win10clangcl/libopenmpt-small.vcxproj (working copy) @@ -499,7 +499,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -522,7 +522,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -567,7 +567,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -589,7 +589,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -618,7 +618,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -646,7 +646,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -674,7 +674,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -702,7 +702,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -731,7 +731,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -759,7 +759,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -787,7 +787,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -815,7 +815,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -826,7 +826,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -842,7 +842,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -853,7 +853,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -869,7 +869,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -880,7 +880,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -896,7 +896,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -907,7 +907,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -923,7 +923,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -939,7 +939,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -957,7 +957,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -972,7 +972,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -990,7 +990,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1005,7 +1005,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1023,7 +1023,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1038,7 +1038,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1056,7 +1056,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1072,7 +1072,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1090,7 +1090,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1105,7 +1105,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1123,7 +1123,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1138,7 +1138,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1156,7 +1156,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1171,7 +1171,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1319,6 +1319,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win10clangcl/libopenmpt.vcxproj =================================================================== --- build/vs2019win10clangcl/libopenmpt.vcxproj (revision 14776) +++ build/vs2019win10clangcl/libopenmpt.vcxproj (working copy) @@ -499,7 +499,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -522,7 +522,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -545,7 +545,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -567,7 +567,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -589,7 +589,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -618,7 +618,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -646,7 +646,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -674,7 +674,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -702,7 +702,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -731,7 +731,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -759,7 +759,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -787,7 +787,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -815,7 +815,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -826,7 +826,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -842,7 +842,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -853,7 +853,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -869,7 +869,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -880,7 +880,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -896,7 +896,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -907,7 +907,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -923,7 +923,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -939,7 +939,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -957,7 +957,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -972,7 +972,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -990,7 +990,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1005,7 +1005,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1023,7 +1023,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1038,7 +1038,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1056,7 +1056,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1072,7 +1072,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1090,7 +1090,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1105,7 +1105,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1123,7 +1123,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1138,7 +1138,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1156,7 +1156,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1171,7 +1171,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1319,6 +1319,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win10clangcl/libopenmpt_test.vcxproj =================================================================== --- build/vs2019win10clangcl/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2019win10clangcl/libopenmpt_test.vcxproj (working copy) @@ -265,7 +265,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -288,7 +288,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -311,7 +311,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -333,7 +333,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -355,7 +355,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -384,7 +384,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -412,7 +412,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -440,7 +440,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -468,7 +468,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -497,7 +497,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -525,7 +525,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -553,7 +553,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -711,6 +711,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -855,6 +950,16 @@ + + + + + + + + + + Index: build/vs2019win10clangcl/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj (working copy) @@ -536,7 +536,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -548,7 +548,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -583,7 +583,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -606,7 +606,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -618,7 +618,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -652,7 +652,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -674,7 +674,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -691,7 +691,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -715,7 +715,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -731,7 +731,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -755,7 +755,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -771,7 +771,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -795,7 +795,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -811,7 +811,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -835,7 +835,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -852,7 +852,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -876,7 +876,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -892,7 +892,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -916,7 +916,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -932,7 +932,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -956,7 +956,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -972,7 +972,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -996,7 +996,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1008,7 +1008,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1064,7 +1064,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1076,7 +1076,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1098,7 +1098,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1110,7 +1110,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1132,7 +1132,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1149,7 +1149,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1173,7 +1173,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1189,7 +1189,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1213,7 +1213,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1229,7 +1229,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1253,7 +1253,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1269,7 +1269,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1293,7 +1293,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1310,7 +1310,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1334,7 +1334,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1350,7 +1350,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1374,7 +1374,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1390,7 +1390,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1414,7 +1414,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1430,7 +1430,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1712,6 +1712,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1748,8 +1850,6 @@ - - @@ -1987,6 +2087,18 @@ + + + + + + + + + + + + Index: build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj (working copy) @@ -511,7 +511,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -536,7 +536,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -561,7 +561,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -585,7 +585,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -609,7 +609,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -640,7 +640,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -670,7 +670,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -700,7 +700,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -730,7 +730,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -761,7 +761,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -791,7 +791,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -821,7 +821,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -851,7 +851,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -875,7 +875,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -899,7 +899,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -923,7 +923,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -947,7 +947,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -978,7 +978,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1008,7 +1008,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1038,7 +1038,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1068,7 +1068,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1099,7 +1099,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1129,7 +1129,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1159,7 +1159,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1267,6 +1267,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1290,8 +1392,6 @@ - - Index: build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj (working copy) @@ -536,7 +536,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -548,7 +548,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -583,7 +583,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -606,7 +606,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -618,7 +618,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -652,7 +652,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -674,7 +674,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -691,7 +691,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -715,7 +715,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -731,7 +731,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -755,7 +755,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -771,7 +771,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -795,7 +795,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -811,7 +811,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -835,7 +835,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -852,7 +852,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -876,7 +876,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -892,7 +892,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -916,7 +916,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -932,7 +932,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -956,7 +956,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -972,7 +972,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -996,7 +996,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1008,7 +1008,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1064,7 +1064,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1076,7 +1076,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1098,7 +1098,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1110,7 +1110,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1132,7 +1132,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1149,7 +1149,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1173,7 +1173,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1189,7 +1189,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1213,7 +1213,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1229,7 +1229,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1253,7 +1253,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1269,7 +1269,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1293,7 +1293,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1310,7 +1310,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1334,7 +1334,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1350,7 +1350,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1374,7 +1374,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1390,7 +1390,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1414,7 +1414,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1430,7 +1430,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1712,6 +1712,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1748,8 +1850,6 @@ - - @@ -1987,6 +2087,18 @@ + + + + + + + + + + + + Index: build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10clangcl/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2019win10clangcl/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2019win10clangcl/OpenMPT-WineWrapper.vcxproj (working copy) @@ -511,7 +511,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -535,7 +535,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -559,7 +559,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -582,7 +582,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -605,7 +605,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -635,7 +635,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -664,7 +664,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -693,7 +693,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -722,7 +722,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -752,7 +752,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -781,7 +781,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -810,7 +810,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -839,7 +839,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -862,7 +862,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -885,7 +885,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -908,7 +908,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -931,7 +931,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -961,7 +961,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -990,7 +990,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1019,7 +1019,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1048,7 +1048,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1078,7 +1078,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1107,7 +1107,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1136,7 +1136,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2019win10clangcl/OpenMPT.vcxproj =================================================================== --- build/vs2019win10clangcl/OpenMPT.vcxproj (revision 14776) +++ build/vs2019win10clangcl/OpenMPT.vcxproj (working copy) @@ -536,7 +536,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -548,7 +548,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -571,7 +571,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -583,7 +583,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -606,7 +606,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -618,7 +618,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -640,7 +640,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -652,7 +652,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -674,7 +674,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -691,7 +691,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -715,7 +715,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -731,7 +731,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -755,7 +755,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -771,7 +771,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -795,7 +795,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -811,7 +811,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -835,7 +835,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -852,7 +852,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -876,7 +876,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -892,7 +892,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -916,7 +916,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -932,7 +932,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -956,7 +956,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -972,7 +972,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -996,7 +996,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1008,7 +1008,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1030,7 +1030,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1042,7 +1042,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1064,7 +1064,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1076,7 +1076,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1098,7 +1098,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -1110,7 +1110,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1132,7 +1132,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1149,7 +1149,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1173,7 +1173,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1189,7 +1189,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1213,7 +1213,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1229,7 +1229,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1253,7 +1253,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -1269,7 +1269,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1293,7 +1293,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1310,7 +1310,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1334,7 +1334,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1350,7 +1350,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1374,7 +1374,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1390,7 +1390,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1414,7 +1414,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -1430,7 +1430,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1712,6 +1712,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1748,8 +1850,6 @@ - - @@ -1987,6 +2087,18 @@ + + + + + + + + + + + + Index: build/vs2019win10clangcl/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/OpenMPT.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win10clangcl/openmpt123.vcxproj =================================================================== --- build/vs2019win10clangcl/openmpt123.vcxproj (revision 14776) +++ build/vs2019win10clangcl/openmpt123.vcxproj (working copy) @@ -511,7 +511,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -522,7 +522,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -540,7 +540,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -551,7 +551,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -569,7 +569,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -580,7 +580,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -597,7 +597,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -608,7 +608,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -625,7 +625,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -641,7 +641,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -660,7 +660,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -675,7 +675,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -694,7 +694,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -709,7 +709,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -728,7 +728,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -743,7 +743,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -762,7 +762,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -778,7 +778,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -797,7 +797,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -812,7 +812,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -831,7 +831,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -846,7 +846,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -865,7 +865,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -880,7 +880,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -899,7 +899,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -910,7 +910,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -927,7 +927,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -938,7 +938,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -955,7 +955,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -966,7 +966,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -983,7 +983,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -994,7 +994,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1011,7 +1011,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1027,7 +1027,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1046,7 +1046,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1061,7 +1061,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1080,7 +1080,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1095,7 +1095,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1114,7 +1114,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1129,7 +1129,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1148,7 +1148,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1164,7 +1164,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1183,7 +1183,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1198,7 +1198,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1217,7 +1217,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1232,7 +1232,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1251,7 +1251,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1266,7 +1266,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"arm64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -1293,6 +1293,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/openmpt123.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2019win10clangcl/PluginBridge.vcxproj =================================================================== --- build/vs2019win10clangcl/PluginBridge.vcxproj (revision 14776) +++ build/vs2019win10clangcl/PluginBridge.vcxproj (working copy) @@ -511,7 +511,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -522,7 +522,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -575,7 +575,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -586,7 +586,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -606,7 +606,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -617,7 +617,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -637,7 +637,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -653,7 +653,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -675,7 +675,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -690,7 +690,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -712,7 +712,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -727,7 +727,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -749,7 +749,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -764,7 +764,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -786,7 +786,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -802,7 +802,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -824,7 +824,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -839,7 +839,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -861,7 +861,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -876,7 +876,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -898,7 +898,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -913,7 +913,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -935,7 +935,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -946,7 +946,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -966,7 +966,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -977,7 +977,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -997,7 +997,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1008,7 +1008,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1028,7 +1028,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1039,7 +1039,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1059,7 +1059,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1075,7 +1075,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1097,7 +1097,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1112,7 +1112,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1134,7 +1134,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1149,7 +1149,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1171,7 +1171,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1186,7 +1186,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1208,7 +1208,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1224,7 +1224,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1246,7 +1246,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1261,7 +1261,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1283,7 +1283,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1298,7 +1298,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1320,7 +1320,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1335,7 +1335,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1359,6 +1359,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/PluginBridge.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win10clangcl/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2019win10clangcl/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2019win10clangcl/PluginBridgeLegacy.vcxproj (working copy) @@ -511,7 +511,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -522,7 +522,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -543,7 +543,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -554,7 +554,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -576,7 +576,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -587,7 +587,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -606,7 +606,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -617,7 +617,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -637,7 +637,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -653,7 +653,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -675,7 +675,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -690,7 +690,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -713,7 +713,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -728,7 +728,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -749,7 +749,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -764,7 +764,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -786,7 +786,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -802,7 +802,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -824,7 +824,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -839,7 +839,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -862,7 +862,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -877,7 +877,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -898,7 +898,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -913,7 +913,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -935,7 +935,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -946,7 +946,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -966,7 +966,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -977,7 +977,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -998,7 +998,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1009,7 +1009,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1028,7 +1028,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -1039,7 +1039,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1059,7 +1059,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1075,7 +1075,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1097,7 +1097,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1112,7 +1112,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1135,7 +1135,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1150,7 +1150,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1171,7 +1171,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1186,7 +1186,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1208,7 +1208,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1224,7 +1224,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1246,7 +1246,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1261,7 +1261,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1284,7 +1284,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1299,7 +1299,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1320,7 +1320,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1335,7 +1335,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;VER_ARCHNAME=\"arm64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -1359,6 +1359,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win10clangcl/signtool.vcxproj =================================================================== --- build/vs2019win10clangcl/signtool.vcxproj (revision 14776) +++ build/vs2019win10clangcl/signtool.vcxproj (working copy) @@ -511,7 +511,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -535,7 +535,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -559,7 +559,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -582,7 +582,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -605,7 +605,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -635,7 +635,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -664,7 +664,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -693,7 +693,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -722,7 +722,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -752,7 +752,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -781,7 +781,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -810,7 +810,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -839,7 +839,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -862,7 +862,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -885,7 +885,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -908,7 +908,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -931,7 +931,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -961,7 +961,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -990,7 +990,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1019,7 +1019,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -1048,7 +1048,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1078,7 +1078,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1107,7 +1107,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1136,7 +1136,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0A00;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -1208,6 +1208,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1232,8 +1334,6 @@ - - Index: build/vs2019win10clangcl/signtool.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/signtool.vcxproj.filters (revision 14776) +++ build/vs2019win10clangcl/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win7/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win7/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2019win7/libopenmpt-small.vcxproj (working copy) @@ -269,7 +269,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -292,7 +292,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -344,7 +344,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -372,7 +372,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -401,7 +401,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -429,7 +429,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -440,7 +440,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -456,7 +456,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -467,7 +467,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -483,7 +483,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -499,7 +499,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -532,7 +532,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -550,7 +550,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -584,7 +584,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -599,7 +599,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -747,6 +747,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win7/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2019win7/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win7/libopenmpt.vcxproj =================================================================== --- build/vs2019win7/libopenmpt.vcxproj (revision 14776) +++ build/vs2019win7/libopenmpt.vcxproj (working copy) @@ -269,7 +269,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -292,7 +292,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -344,7 +344,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -372,7 +372,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -401,7 +401,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -429,7 +429,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -440,7 +440,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -456,7 +456,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -467,7 +467,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -483,7 +483,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -499,7 +499,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -532,7 +532,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -550,7 +550,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -584,7 +584,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -599,7 +599,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -747,6 +747,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win7/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2019win7/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win7/libopenmpt_test.vcxproj =================================================================== --- build/vs2019win7/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2019win7/libopenmpt_test.vcxproj (working copy) @@ -147,7 +147,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -170,7 +170,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -193,7 +193,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -222,7 +222,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -250,7 +250,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -279,7 +279,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -437,6 +437,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581,6 +676,16 @@ + + + + + + + + + + Index: build/vs2019win7/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win7/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2019win7/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win7/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2019win7/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2019win7/OpenMPT-ANSI.vcxproj (working copy) @@ -288,7 +288,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -335,7 +335,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -358,7 +358,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -375,7 +375,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -399,7 +399,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -415,7 +415,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -439,7 +439,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -456,7 +456,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -480,7 +480,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -496,7 +496,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -532,7 +532,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -554,7 +554,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -588,7 +588,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -605,7 +605,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -629,7 +629,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -645,7 +645,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -710,7 +710,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -726,7 +726,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1008,6 +1008,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1146,6 @@ - - @@ -1283,6 +1383,18 @@ + + + + + + + + + + + + Index: build/vs2019win7/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2019win7/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win7/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2019win7/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2019win7/OpenMPT-NativeSupport.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -300,7 +300,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -325,7 +325,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -356,7 +356,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -386,7 +386,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -417,7 +417,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -447,7 +447,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -471,7 +471,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -495,7 +495,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -526,7 +526,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -556,7 +556,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -587,7 +587,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -695,6 +695,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -718,8 +820,6 @@ - - Index: build/vs2019win7/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2019win7/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win7/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win7/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2019win7/OpenMPT-UTF8.vcxproj (working copy) @@ -288,7 +288,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -335,7 +335,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -358,7 +358,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -375,7 +375,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -399,7 +399,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -415,7 +415,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -439,7 +439,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -456,7 +456,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -480,7 +480,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -496,7 +496,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -532,7 +532,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -554,7 +554,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -588,7 +588,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -605,7 +605,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -629,7 +629,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -645,7 +645,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -710,7 +710,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -726,7 +726,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1008,6 +1008,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1146,6 @@ - - @@ -1283,6 +1383,18 @@ + + + + + + + + + + + + Index: build/vs2019win7/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2019win7/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win7/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2019win7/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2019win7/OpenMPT-WineWrapper.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -299,7 +299,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -323,7 +323,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -353,7 +353,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -382,7 +382,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -412,7 +412,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -441,7 +441,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -464,7 +464,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -487,7 +487,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -546,7 +546,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -576,7 +576,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2019win7/OpenMPT.vcxproj =================================================================== --- build/vs2019win7/OpenMPT.vcxproj (revision 14776) +++ build/vs2019win7/OpenMPT.vcxproj (working copy) @@ -288,7 +288,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -335,7 +335,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -358,7 +358,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -375,7 +375,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -399,7 +399,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -415,7 +415,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -439,7 +439,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -456,7 +456,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -480,7 +480,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -496,7 +496,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -532,7 +532,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -554,7 +554,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -588,7 +588,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -605,7 +605,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -629,7 +629,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -645,7 +645,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -710,7 +710,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -726,7 +726,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1008,6 +1008,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1146,6 @@ - - @@ -1283,6 +1383,18 @@ + + + + + + + + + + + + Index: build/vs2019win7/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2019win7/OpenMPT.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win7/openmpt123.vcxproj =================================================================== --- build/vs2019win7/openmpt123.vcxproj (revision 14776) +++ build/vs2019win7/openmpt123.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -304,7 +304,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -333,7 +333,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -349,7 +349,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -368,7 +368,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -383,7 +383,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -402,7 +402,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -418,7 +418,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -437,7 +437,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -452,7 +452,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -471,7 +471,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -482,7 +482,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -499,7 +499,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -510,7 +510,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -527,7 +527,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -543,7 +543,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -562,7 +562,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -577,7 +577,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -596,7 +596,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -612,7 +612,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -631,7 +631,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -646,7 +646,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -673,6 +673,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/openmpt123.vcxproj.filters =================================================================== --- build/vs2019win7/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2019win7/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2019win7/PluginBridge.vcxproj =================================================================== --- build/vs2019win7/PluginBridge.vcxproj (revision 14776) +++ build/vs2019win7/PluginBridge.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -307,7 +307,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -318,7 +318,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -339,7 +339,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -355,7 +355,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -377,7 +377,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -392,7 +392,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -414,7 +414,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -430,7 +430,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -452,7 +452,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -467,7 +467,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -489,7 +489,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -500,7 +500,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -531,7 +531,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -551,7 +551,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -567,7 +567,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -589,7 +589,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -604,7 +604,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -626,7 +626,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -642,7 +642,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -664,7 +664,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -679,7 +679,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -703,6 +703,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/PluginBridge.vcxproj.filters =================================================================== --- build/vs2019win7/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2019win7/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win7/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2019win7/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2019win7/PluginBridgeLegacy.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -307,7 +307,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -318,7 +318,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -340,7 +340,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -356,7 +356,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -378,7 +378,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -393,7 +393,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -416,7 +416,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -432,7 +432,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -454,7 +454,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -469,7 +469,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -492,7 +492,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -503,7 +503,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -523,7 +523,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -534,7 +534,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -555,7 +555,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -571,7 +571,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -593,7 +593,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -608,7 +608,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -631,7 +631,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -647,7 +647,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -684,7 +684,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -709,6 +709,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2019win7/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2019win7/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win7/signtool.vcxproj =================================================================== --- build/vs2019win7/signtool.vcxproj (revision 14776) +++ build/vs2019win7/signtool.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -299,7 +299,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -323,7 +323,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -353,7 +353,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -382,7 +382,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -412,7 +412,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -441,7 +441,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -464,7 +464,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -487,7 +487,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -546,7 +546,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -576,7 +576,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0601;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -648,6 +648,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -672,8 +774,6 @@ - - Index: build/vs2019win7/signtool.vcxproj.filters =================================================================== --- build/vs2019win7/signtool.vcxproj.filters (revision 14776) +++ build/vs2019win7/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win81/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win81/libopenmpt-small.vcxproj (revision 14776) +++ build/vs2019win81/libopenmpt-small.vcxproj (working copy) @@ -269,7 +269,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -292,7 +292,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -344,7 +344,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -372,7 +372,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -401,7 +401,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -429,7 +429,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -440,7 +440,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -456,7 +456,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -467,7 +467,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -483,7 +483,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -499,7 +499,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -532,7 +532,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -550,7 +550,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -584,7 +584,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -599,7 +599,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_SMALL;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_SPECIAL_PREFIX=\"+small\";MPT_BUILD_VER_FILENAME=\"libopenmpt-small.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt-small\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -747,6 +747,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win81/libopenmpt-small.vcxproj.filters (revision 14776) +++ build/vs2019win81/libopenmpt-small.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win81/libopenmpt.vcxproj =================================================================== --- build/vs2019win81/libopenmpt.vcxproj (revision 14776) +++ build/vs2019win81/libopenmpt.vcxproj (working copy) @@ -269,7 +269,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -292,7 +292,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -344,7 +344,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -372,7 +372,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -401,7 +401,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -429,7 +429,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -440,7 +440,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -456,7 +456,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -467,7 +467,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -483,7 +483,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -499,7 +499,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -532,7 +532,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -550,7 +550,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -584,7 +584,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -599,7 +599,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"libopenmpt.dll\";MPT_BUILD_VER_FILEDESC=\"libopenmpt\";MPT_BUILD_VER_DLL;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Windows @@ -747,6 +747,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win81/libopenmpt.vcxproj.filters (revision 14776) +++ build/vs2019win81/libopenmpt.vcxproj.filters (working copy) @@ -22,6 +22,96 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + @@ -426,6 +516,285 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + Index: build/vs2019win81/libopenmpt_test.vcxproj =================================================================== --- build/vs2019win81/libopenmpt_test.vcxproj (revision 14776) +++ build/vs2019win81/libopenmpt_test.vcxproj (working copy) @@ -147,7 +147,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -170,7 +170,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -193,7 +193,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -222,7 +222,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -250,7 +250,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -279,7 +279,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_BUILD;LIBOPENMPT_BUILD_TEST;%(PreprocessorDefinitions) - ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\ogg\include;..\..\include\vorbis\include;..\..\include\zlib;..\..;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -437,6 +437,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581,6 +676,16 @@ + + + + + + + + + + Index: build/vs2019win81/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win81/libopenmpt_test.vcxproj.filters (revision 14776) +++ build/vs2019win81/libopenmpt_test.vcxproj.filters (working copy) @@ -22,6 +22,99 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -429,6 +522,291 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + test @@ -857,6 +1235,36 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win81/OpenMPT-ANSI.vcxproj =================================================================== --- build/vs2019win81/OpenMPT-ANSI.vcxproj (revision 14776) +++ build/vs2019win81/OpenMPT-ANSI.vcxproj (working copy) @@ -288,7 +288,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -335,7 +335,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -358,7 +358,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -375,7 +375,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -399,7 +399,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -415,7 +415,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -439,7 +439,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -456,7 +456,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -480,7 +480,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -496,7 +496,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -532,7 +532,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -554,7 +554,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -588,7 +588,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -605,7 +605,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -629,7 +629,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -645,7 +645,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -710,7 +710,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -726,7 +726,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;NO_WARN_MBCS_MFC_DEPRECATION;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1008,6 +1008,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1146,6 @@ - - @@ -1283,6 +1383,18 @@ + + + + + + + + + + + + Index: build/vs2019win81/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT-ANSI.vcxproj.filters (revision 14776) +++ build/vs2019win81/OpenMPT-ANSI.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win81/OpenMPT-NativeSupport.vcxproj =================================================================== --- build/vs2019win81/OpenMPT-NativeSupport.vcxproj (revision 14776) +++ build/vs2019win81/OpenMPT-NativeSupport.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -300,7 +300,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -325,7 +325,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -356,7 +356,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -386,7 +386,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -417,7 +417,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -447,7 +447,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -471,7 +471,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -495,7 +495,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -526,7 +526,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -556,7 +556,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -587,7 +587,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\nlohmann-json\include;..\..\include\portaudio\include;..\..\include\rtaudio;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -695,6 +695,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -718,8 +820,6 @@ - - Index: build/vs2019win81/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT-NativeSupport.vcxproj.filters (revision 14776) +++ build/vs2019win81/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,6 +31,114 @@ {8DE8B016-79B5-0B22-A2CE-F9C98EFA40B0} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -279,6 +387,312 @@ sounddev + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -344,12 +758,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win81/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win81/OpenMPT-UTF8.vcxproj (revision 14776) +++ build/vs2019win81/OpenMPT-UTF8.vcxproj (working copy) @@ -288,7 +288,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -335,7 +335,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -358,7 +358,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -375,7 +375,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -399,7 +399,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -415,7 +415,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -439,7 +439,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -456,7 +456,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -480,7 +480,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -496,7 +496,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -532,7 +532,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -554,7 +554,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -588,7 +588,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -605,7 +605,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -629,7 +629,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -645,7 +645,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -710,7 +710,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -726,7 +726,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;MPT_USTRING_MODE_UTF8_FORCE;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1008,6 +1008,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1146,6 @@ - - @@ -1283,6 +1383,18 @@ + + + + + + + + + + + + Index: build/vs2019win81/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT-UTF8.vcxproj.filters (revision 14776) +++ build/vs2019win81/OpenMPT-UTF8.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win81/OpenMPT-WineWrapper.vcxproj =================================================================== --- build/vs2019win81/OpenMPT-WineWrapper.vcxproj (revision 14776) +++ build/vs2019win81/OpenMPT-WineWrapper.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -299,7 +299,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -323,7 +323,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -353,7 +353,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -382,7 +382,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -412,7 +412,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -441,7 +441,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -464,7 +464,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -487,7 +487,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -546,7 +546,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -576,7 +576,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_WINESUPPORT_WRAPPER;%(PreprocessorDefinitions) - ..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true Index: build/vs2019win81/OpenMPT.vcxproj =================================================================== --- build/vs2019win81/OpenMPT.vcxproj (revision 14776) +++ build/vs2019win81/OpenMPT.vcxproj (working copy) @@ -288,7 +288,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -300,7 +300,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -323,7 +323,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -335,7 +335,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -358,7 +358,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -375,7 +375,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -399,7 +399,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -415,7 +415,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -439,7 +439,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -456,7 +456,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -480,7 +480,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -496,7 +496,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -532,7 +532,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -554,7 +554,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h EditAndContinue Disabled @@ -566,7 +566,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -588,7 +588,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -605,7 +605,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -629,7 +629,7 @@ PCH.h Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase MaxSpeed @@ -645,7 +645,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -686,7 +686,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -710,7 +710,7 @@ PCH.h Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) PCH.h ProgramDatabase Full @@ -726,7 +726,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MPT_BUILD_ENABLE_PCH;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) + ..\..\include;..\..\include\asiomodern\include;..\..\include\ASIOSDK2\common;..\..\include\flac\include;..\..\include\lame\include;..\..\include\lhasa\lib\public;..\..\include\mpg123\ports\MSVC++;..\..\include\mpg123\src\libmpg123;..\..\include\nlohmann-json\include;..\..\include\ogg\include;..\..\include\opus\include;..\..\include\opusenc\include;..\..\include\opusfile\include;..\..\include\portaudio\include;..\..\include\rtaudio;..\..\include\vorbis\include;..\..\include\zlib;..\..\src;..\..\common;..\..\soundlib;$(IntDir)\svn_version;..\svn_version;..\pch;%(AdditionalIncludeDirectories) Windows @@ -1008,6 +1008,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1146,6 @@ - - @@ -1283,6 +1383,18 @@ + + + + + + + + + + + + Index: build/vs2019win81/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT.vcxproj.filters (revision 14776) +++ build/vs2019win81/OpenMPT.vcxproj.filters (working copy) @@ -61,6 +61,114 @@ {A591FA3A-9120-8404-3A3F-98FF26AD94AA} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + {65689E7C-519F-9F0D-FA8B-8510E6A11B0F} @@ -861,6 +969,312 @@ soundlib + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + test @@ -965,12 +1379,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2090,42 @@ test + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + test Index: build/vs2019win81/openmpt123.vcxproj =================================================================== --- build/vs2019win81/openmpt123.vcxproj (revision 14776) +++ build/vs2019win81/openmpt123.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -304,7 +304,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -315,7 +315,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -333,7 +333,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -349,7 +349,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -368,7 +368,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -383,7 +383,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -402,7 +402,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -418,7 +418,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -437,7 +437,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -452,7 +452,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -471,7 +471,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -482,7 +482,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -499,7 +499,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -510,7 +510,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -527,7 +527,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -543,7 +543,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -562,7 +562,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -577,7 +577,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -596,7 +596,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -612,7 +612,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"x86\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -631,7 +631,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -646,7 +646,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;LIBOPENMPT_USE_DLL;VER_ARCHNAME=\"amd64\";MPT_BUILD_VER_FILENAME=\"openmpt123.exe\";MPT_BUILD_VER_FILEDESC=\"openmpt123\";MPT_BUILD_VER_EXE;%(PreprocessorDefinitions) - ..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\include\flac\include;..\..\include\portaudio\include;..\..;..\..\openmpt123;$(IntDir)\svn_version;..\svn_version;$(IntDir)\svn_version;..\svn_version;$(ProjDir)\..\..\build\svn_version;%(AdditionalIncludeDirectories) Console @@ -673,6 +673,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/openmpt123.vcxproj.filters =================================================================== --- build/vs2019win81/openmpt123.vcxproj.filters (revision 14776) +++ build/vs2019win81/openmpt123.vcxproj.filters (working copy) @@ -4,23 +4,178 @@ {FFE9848F-EBA1-C6DC-54A9-9F38408061CD} + + {BECCA03C-AA84-E289-138C-BBE5FF627D7A} + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + - - - - - - - - - - - - + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + openmpt123 + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string + - + + openmpt123 + Index: build/vs2019win81/PluginBridge.vcxproj =================================================================== --- build/vs2019win81/PluginBridge.vcxproj (revision 14776) +++ build/vs2019win81/PluginBridge.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -307,7 +307,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -318,7 +318,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -339,7 +339,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -355,7 +355,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -377,7 +377,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -392,7 +392,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -414,7 +414,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -430,7 +430,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -452,7 +452,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -467,7 +467,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -489,7 +489,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -500,7 +500,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -520,7 +520,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -531,7 +531,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -551,7 +551,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -567,7 +567,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -589,7 +589,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -604,7 +604,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -626,7 +626,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -642,7 +642,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -664,7 +664,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -679,7 +679,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -703,6 +703,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/PluginBridge.vcxproj.filters =================================================================== --- build/vs2019win81/PluginBridge.vcxproj.filters (revision 14776) +++ build/vs2019win81/PluginBridge.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win81/PluginBridgeLegacy.vcxproj =================================================================== --- build/vs2019win81/PluginBridgeLegacy.vcxproj (revision 14776) +++ build/vs2019win81/PluginBridgeLegacy.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -286,7 +286,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -307,7 +307,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -318,7 +318,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -340,7 +340,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -356,7 +356,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -378,7 +378,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -393,7 +393,7 @@ NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -416,7 +416,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -432,7 +432,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -454,7 +454,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -469,7 +469,7 @@ DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -492,7 +492,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -503,7 +503,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -523,7 +523,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -534,7 +534,7 @@ DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -555,7 +555,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -571,7 +571,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -593,7 +593,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -608,7 +608,7 @@ NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -631,7 +631,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -647,7 +647,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"x86\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -669,7 +669,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -684,7 +684,7 @@ DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;VER_ARCHNAME=\"amd64\";%(PreprocessorDefinitions) - ..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) Windows @@ -709,6 +709,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/PluginBridgeLegacy.vcxproj.filters =================================================================== --- build/vs2019win81/PluginBridgeLegacy.vcxproj.filters (revision 14776) +++ build/vs2019win81/PluginBridgeLegacy.vcxproj.filters (working copy) @@ -10,6 +10,114 @@ {E1FAE259-CD5D-72FE-76E3-AAB462253E81} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -30,6 +138,312 @@ pluginBridge + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + Index: build/vs2019win81/signtool.vcxproj =================================================================== --- build/vs2019win81/signtool.vcxproj (revision 14776) +++ build/vs2019win81/signtool.vcxproj (working copy) @@ -275,7 +275,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -299,7 +299,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -323,7 +323,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -353,7 +353,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -382,7 +382,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -412,7 +412,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_STATIC;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -441,7 +441,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -464,7 +464,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -487,7 +487,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -517,7 +517,7 @@ NotUsing Level4 NDEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase MaxSpeed true @@ -546,7 +546,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -576,7 +576,7 @@ NotUsing Level4 DEBUG;MPT_BUILD_MSVC_SHARED;MPT_BUILD_CHECKED;MPT_BUILD_MSVC;WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1;_WIN32_WINNT=0x0603;MODPLUG_TRACKER;MPT_BUILD_SIGNTOOL;%(PreprocessorDefinitions) - ..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) + ..\..\src;..\..\common;..\..\include;..\..\include\nlohmann-json\include;$(IntDir)\svn_version;..\svn_version;%(AdditionalIncludeDirectories) ProgramDatabase Full true @@ -648,6 +648,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -672,8 +774,6 @@ - - Index: build/vs2019win81/signtool.vcxproj.filters =================================================================== --- build/vs2019win81/signtool.vcxproj.filters (revision 14776) +++ build/vs2019win81/signtool.vcxproj.filters (working copy) @@ -13,6 +13,114 @@ {B1A29A7C-9DD9-9B0D-46C6-811032DC170F} + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + {0D1E30A9-79FD-AE44-8215-3A1BEE7315A6} + + + {D7D6CF03-C339-5FA8-6CBF-975E58012B2B} + + + {F94610AE-E52A-D103-4E8B-CB563A8EBB85} + + + {E1ECAE37-CDBA-A23D-B64E-1364A2BB7EA2} + + + {833C2E90-6FCB-B759-18EA-CB540458C8FF} + + + {7A65E07D-E625-5CB4-AF60-A5311BE0A090} + + + {94D615E1-008C-8ED6-8980-88ADF53485DA} + + + {766058C2-E276-5658-2BEE-E179974327E0} + + + {3D3AAD3A-2908-A140-129C-1167FE087DA5} + + + {DF1EE047-CBAD-6911-74CC-7D0C603A7AB7} + + + {7535143C-6103-0842-4A97-78683604E4A6} + + + {4B85033F-3753-F744-20E7-676B0C54D3A9} + + + {6DFC313A-598B-BB03-02AA-CFFEEE17CCA9} + + + {B1B8A85D-1D1A-866B-A687-CC1D12E8BC2A} + + + {6F821773-5B7C-40C5-44E9-D6D53082A631} + + + {C5847241-B152-6647-9AE6-D66D865342AC} + + + {672FE5C8-53BE-6E92-FCDC-828DE84A7F38} + + + {F685D403-E2E8-63A8-8B6E-9C5E77B02F2B} + + + {8FBB9C7E-FB7B-18B5-C4B6-613230365D91} + + + {EA69B456-D637-A85C-BFCB-1883AB3884C1} + + + {208F8479-8CFB-3F74-55EF-D7D1C11A62DC} + + + {B706C87E-23C7-43B5-EC01-8D3258818891} + + + {D9DE24CF-4540-02DD-CEAD-488F3A0E399C} + + + {3DBF705C-298D-6462-1221-D588FE8D40C7} + + + {DF637371-CBF2-FC3A-7411-1136607F0DE1} + + + {13002060-FFCD-1366-E861-848CD4CEEFCA} + + + {356DC124-21FC-4AEE-CA1A-5FE9B6885B94} + + + {F37785A1-DF71-AEF3-C8DE-4404B4771460} + + + {154D19CB-0108-0977-AABF-81C196595307} + + + {EA9E70B3-D62D-FA7C-7F4C-0E786BBA0A23} + + + {BCC6D903-A829-69A8-51AF-A15E3DF1342B} + + + {D395DA03-BFF8-69A8-687E-A25E54C0352B} + + + {F552058D-E136-C6E2-4A97-C035369AB064} + + + {5F481DCA-4B42-461C-34AF-DC2C2048AC88} + + + {81BEDE93-6D79-CE3F-1631-478A02CB18D0} + @@ -156,6 +264,312 @@ misc + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base\tests + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary + + + src\mpt\binary\tests + + + src\mpt\check + + + src\mpt\check + + + src\mpt\check + + + src\mpt\crc + + + src\mpt\crc\tests + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto + + + src\mpt\crypto\tests + + + src\mpt\detect + + + src\mpt\detect + + + src\mpt\endian + + + src\mpt\endian + + + src\mpt\endian\tests + + + src\mpt\endian\tests + + + src\mpt\environment + + + src\mpt\exception_text + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format + + + src\mpt\format\tests + + + src\mpt\format\tests + + + src\mpt\json + + + src\mpt\mutex + + + src\mpt\osinfo + + + src\mpt\out_of_memory + + + src\mpt\parse + + + src\mpt\parse\tests + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random + + + src\mpt\random\tests + + + src\mpt\string + + + src\mpt\string\tests + + + src\mpt\string\tests + + + src\mpt\string + + + src\mpt\string + + + src\mpt\string_convert + + + src\mpt\string_convert + + + src\mpt\string_convert\tests + + + src\mpt\system_error + + + src\mpt\test + + + src\mpt\test + + + src\mpt\uuid + + + src\mpt\uuid\tests + + + src\mpt\uuid + + + src\mpt\uuid_namespace\tests + + + src\mpt\uuid_namespace + @@ -224,12 +638,6 @@ misc - - misc - - - misc - misc Index: build/wine/build_wine_support.cmd =================================================================== --- build/wine/build_wine_support.cmd (revision 14776) +++ build/wine/build_wine_support.cmd (working copy) @@ -25,6 +25,40 @@ include\nlohmann-json\include\nlohmann\thirdparty\hedley\*.hpp ^ include\rtkit\rtkit.c ^ include\rtkit\rtkit.h ^ + src\mpt\base\*.hpp ^ + src\mpt\base\tests\*.hpp ^ + src\mpt\binary\*.hpp ^ + src\mpt\binary\tests\*.hpp ^ + src\mpt\check\*.hpp ^ + src\mpt\crc\*.hpp ^ + src\mpt\crc\tests\*.hpp ^ + src\mpt\crypto\*.hpp ^ + src\mpt\crypto\tests\*.hpp ^ + src\mpt\detect\*.hpp ^ + src\mpt\endian\*.hpp ^ + src\mpt\endian\tests\*.hpp ^ + src\mpt\environment\*.hpp ^ + src\mpt\exception_text\*.hpp ^ + src\mpt\format\*.hpp ^ + src\mpt\format\test\*.hpp ^ + src\mpt\json\*.hpp ^ + src\mpt\mutex\*.hpp ^ + src\mpt\osinfo\*.hpp ^ + src\mpt\parse\*.hpp ^ + src\mpt\parse\tests\*.hpp ^ + src\mpt\out_of_memory\*.hpp ^ + src\mpt\random\*.hpp ^ + src\mpt\random\tests\*.hpp ^ + src\mpt\string\*.hpp ^ + src\mpt\string\tests\*.hpp ^ + src\mpt\string_convert\*.hpp ^ + src\mpt\string_convert\tests\*.hpp ^ + src\mpt\system_error\*.hpp ^ + src\mpt\test\*.hpp ^ + src\mpt\uuid\*.hpp ^ + src\mpt\uuid\test\*.hpp ^ + src\mpt\uuid_namespace\*.hpp ^ + src\mpt\uuid_namespace\tests\*.hpp ^ common\*.h ^ common\*.cpp ^ soundbase\*.h ^ Index: build/xcode-genie/mpt-libopenmpt.lua =================================================================== --- build/xcode-genie/mpt-libopenmpt.lua (revision 14776) +++ build/xcode-genie/mpt-libopenmpt.lua (working copy) @@ -18,6 +18,7 @@ includedirs ( extincludedirs ) includedirs { "../..", + "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", @@ -24,6 +25,8 @@ "../../build/svn_version", } files { + "../../src/mpt/**.cpp", + "../../src/mpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundbase/*.cpp", @@ -53,6 +56,16 @@ "../../libopenmpt/libopenmpt_ext_impl.cpp", "../../libopenmpt/libopenmpt_impl.cpp", } + excludes { + "../../src/mpt/crypto/**.cpp", + "../../src/mpt/crypto/**.hpp", + "../../src/mpt/json/**.cpp", + "../../src/mpt/json/**.hpp", + "../../src/mpt/test/**.cpp", + "../../src/mpt/test/**.hpp", + "../../src/mpt/uuid_namespace/**.cpp", + "../../src/mpt/uuid_namespace/**.hpp", + } configuration {} defines { "LIBOPENMPT_BUILD" } Index: build/xcode9-iphoneos/ext/vorbis.xcodeproj/project.pbxproj =================================================================== --- build/xcode9-iphoneos/ext/vorbis.xcodeproj/project.pbxproj (revision 14776) +++ build/xcode9-iphoneos/ext/vorbis.xcodeproj/project.pbxproj (working copy) @@ -195,7 +195,7 @@ B52E177AA13EC34A0AF82769 /* vorbis */, ); name = "include"; - path = "../../include"; + path = "../../../include"; sourceTree = ""; }; B52E177AA13EC34A0AF82769 /* vorbis */ = { Index: build/xcode9-iphoneos/libopenmpt.xcodeproj/project.pbxproj =================================================================== --- build/xcode9-iphoneos/libopenmpt.xcodeproj/project.pbxproj (revision 14776) +++ build/xcode9-iphoneos/libopenmpt.xcodeproj/project.pbxproj (working copy) @@ -277,6 +277,108 @@ 7F669750EB773FF774C9D136 /* tuningCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED48B5AEC242543E4E2BC /* tuningCollection.cpp */; }; 35D73C77A13CD0FD2A1572D6 /* tuningbase.h in Headers */ = {isa = PBXBuildFile; fileRef = 64866C7650D8436639F78076 /* tuningbase.h */; }; FF0E654E6BD5C16AB43050CD /* tuningcollection.h in Headers */ = {isa = PBXBuildFile; fileRef = D7109B26C3239B7F6C0D786C /* tuningcollection.h */; }; + 9C15752988BEDC58B154F8D7 /* algorithm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB5F32E137C5C567C09D6740 /* algorithm.hpp */; }; + 427834F72E8B3450D774113D /* alloc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 31ABD04C9D3A9237A636734F /* alloc.hpp */; }; + 00AE5F976C954A8D75834C09 /* arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFA8EC5CBB3CE20424013CB9 /* arithmetic_shift.hpp */; }; + B16C5A989D7F5AF1466937DE /* array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 405E9187ACED5272B5E9338A /* array.hpp */; }; + 93D2D2157F3A99E3E8A5ADF9 /* bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 224BB17F8E0FB06F5775E039 /* bit.hpp */; }; + 78ED28CCE4091BBDADE1872A /* check_platform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 87716DE6731AD5159CB0F094 /* check_platform.hpp */; }; + 25C236D01182C7747A9FAF7F /* compiletime_warning.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74155F7CE031516DA909BEDA /* compiletime_warning.hpp */; }; + 53CD658F3F779B9E2848A3B9 /* constexpr_throw.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6234A41DCEFA003A17568F9C /* constexpr_throw.hpp */; }; + CC485B3F38B95DB801D8D740 /* detect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5B1990F3479683367013844A /* detect.hpp */; }; + 48990F11344345201D144D3B /* detect_compiler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 37739C93A339F9AFEC948712 /* detect_compiler.hpp */; }; + C9FB6C23B58F62CB1E54BC7F /* detect_libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 980934EB047A3664CD98B0EC /* detect_libc.hpp */; }; + FB84DB9FE7C3851B9046624D /* detect_libcxx.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4A0FB859B64A181DBF3F95AC /* detect_libcxx.hpp */; }; + B52B88A6A1D4EFD5CA6A0B55 /* detect_os.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4402303AB067C3C039406599 /* detect_os.hpp */; }; + 8B553D277794E7A22017C4D4 /* detect_quirks.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DA450125468161E84F76DE77 /* detect_quirks.hpp */; }; + F4C3A4BDE0024F3989852B6B /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A3CED61B0F0A37DF18FFB36E /* floatingpoint.hpp */; }; + 66C8DD7952462E133B3EECAA /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 950801B4012364554A4574E9 /* integer.hpp */; }; + 1FAD27708B1D2AE9543CA471 /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CEBD9467BA3A88AAE3B788BE /* macros.hpp */; }; + 46A92A05B20EBE8B3BE75F64 /* math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D58929FFC1DB00EFAAFA3DFF /* math.hpp */; }; + 4EF4AFC3BA64B23C83832CC5 /* memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9D0B894289887C85B2057D99 /* memory.hpp */; }; + 6421CBB750CA32E779604E66 /* namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 93EE5781FF53EB07882C8DE0 /* namespace.hpp */; }; + ACBE43CB983C9464813452FC /* numeric.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B7BDC3F87953FE1D0B74F75 /* numeric.hpp */; }; + 5CB3ABFD4831FC963129BA2E /* pointer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CBC19C5637DCFFF780FE0F8C /* pointer.hpp */; }; + 6423BD90D03465375986F776 /* preprocessor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3348E2A01FC6323A08BEF0D1 /* preprocessor.hpp */; }; + A03B3F6F8C7AE9EA35FDC51C /* saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFCA30133B0691D644FB0D66 /* saturate_cast.hpp */; }; + 5F15AC7BCB319E6C94090BDA /* saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0E4DA715FAF50E45238C2AC4 /* saturate_round.hpp */; }; + D8261E60449720D90DB69A61 /* secure.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E7FF40BDD37C3400FCF93414 /* secure.hpp */; }; + ECAC758D58946083618262FF /* semantic_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BA460B82738566090FCAF14 /* semantic_version.hpp */; }; + FE273083EAD16592D3A26DAD /* source_location.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2D78A5C5993E02E2E2999044 /* source_location.hpp */; }; + 801F8C8CEC841F13755DC1EB /* span.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFB31F52BB05F741A4243452 /* span.hpp */; }; + C68BD202B2B81E34DB99C144 /* tests_base_arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B5A0EB57210A81BAAA4D2F65 /* tests_base_arithmetic_shift.hpp */; }; + 40FBF82DACB8A16435838DCC /* tests_base_bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F55448E7BFF799D64D081B8 /* tests_base_bit.hpp */; }; + CD858060B9F0406C620CA6D1 /* tests_base_math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DC33C46D481BAF635109B1DF /* tests_base_math.hpp */; }; + 0FF84D797B6CE3D644B630E6 /* tests_base_saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E793E1BDD3947538FC5CE2BC /* tests_base_saturate_cast.hpp */; }; + EE5B202ADA5D643AC3E05A33 /* tests_base_saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1DD48AA189F29E6ED2BFA480 /* tests_base_saturate_round.hpp */; }; + DCEE6CA4482E31BD510EF8D4 /* tests_base_wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B0E58AC17FAEF1B8070AF6E /* tests_base_wrapping_divide.hpp */; }; + C893DB60B4112CFA9D09EA91 /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B7AE97A523C9FA466CEB0ADB /* utility.hpp */; }; + 1C988F0B0816E0A4F10D9E3C /* version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8BAE8EC4F7C8F16540EB01FA /* version.hpp */; }; + 8BC8C5817772FB90604303AC /* wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3933AE14F5A97FD98B52560 /* wrapping_divide.hpp */; }; + C16138A92D9D986C369215FC /* base64.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F0B09491DC185B5F45846F75 /* base64.hpp */; }; + F607C2D9E29BB7814B601136 /* base64url.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A58508BF11F60A38DA1485C0 /* base64url.hpp */; }; + 053796FEF14996579A337344 /* hex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 14649C3680F35D2189EF3E39 /* hex.hpp */; }; + 3334DC8F9FF184C628BC702E /* tests_binary.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8BA7F3577751296760223182 /* tests_binary.hpp */; }; + 502439753C3739CEE52016BB /* libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F168852EBA5493DF4A12A55 /* libc.hpp */; }; + AE01B73F1A674AC6A33FEC9E /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D019BE2295372D21272AFE2 /* mfc.hpp */; }; + 05EF2002712A81C57A1FFE54 /* windows.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B4E39A4BA04B611909B7752F /* windows.hpp */; }; + 26CB79B992E5DC5ADB07EDEE /* crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E7035588A57F74F33A85D6D /* crc.hpp */; }; + BDA9C31829C6B509F29D2277 /* tests_crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC2E9BF998D70229C16D1EA8 /* tests_crc.hpp */; }; + 0CDBF337F86EE9DF61334394 /* exception.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FB92CED56703D14E30224BD7 /* exception.hpp */; }; + A349BCCE0FBABE47D8D838D0 /* hash.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D277709CBEF463DFE77164F3 /* hash.hpp */; }; + 44CEA27030E1A2C9D9CA7FB6 /* jwk.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC9FF0F0682FB2DB712B93F3 /* jwk.hpp */; }; + D01B0A173CD9B24DC5A39EB5 /* tests_crypto.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1FDC6ACC0B86A0DBF456A8F6 /* tests_crypto.hpp */; }; + 0C2970FCF83B7055A1254D42 /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BB351E1027C5DFFA30C1C012 /* mfc.hpp */; }; + 0CA818CFF8514EDEE12256F9 /* nlohmann_json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7B378CD2E7FDE8EE30597751 /* nlohmann_json.hpp */; }; + 0642A890F2EBDD9FDBBCE5BA /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 352D9BC9A1F3F7E5EA4E8648 /* floatingpoint.hpp */; }; + 78A96A1D6452D24C8DE8EDCB /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 271A49A1937FDC271C587E00 /* integer.hpp */; }; + 8DCD11FCF997E356429EE27B /* tests_endian_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC15C013E8AC02C9916179C9 /* tests_endian_floatingpoint.hpp */; }; + 7F682B86EBD1C0E874156F93 /* tests_endian_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6E4E7DA05A24049E43CE1EF1 /* tests_endian_integer.hpp */; }; + 44564418B0C88634F95CBCB8 /* environment.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 53F2C88C3F317308E8B34F3A /* environment.hpp */; }; + A308F4920F9C55411883C5F7 /* exception_text.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 922031457EE0C1E9E7FDA9F4 /* exception_text.hpp */; }; + 4BA56844377BEF4120250A95 /* default_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5A601355C6D255710F678BF5 /* default_floatingpoint.hpp */; }; + 43D1171C2F91A8C098AE90CB /* default_formatter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D2B9D42D3ED6C61E07AE338C /* default_formatter.hpp */; }; + 567685A9424BCD5C6BFA0C59 /* default_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45D34C9FB1E4F4453A368785 /* default_integer.hpp */; }; + A1AE05400D96F0351684F2B1 /* default_string.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D080563FBC144CE725D9A59B /* default_string.hpp */; }; + DB8926BEC7328EEDF0C8A96C /* helpers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AA708BBB16D61E429FAEC01A /* helpers.hpp */; }; + CF1E8B9EBBC7F2CDE45D0E4D /* message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1E1DCE3C8A8261C3135B039C /* message.hpp */; }; + B56C11EA2154FCDF2A42FE5B /* message_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6422BACB50B6AF73B97A0928 /* message_macros.hpp */; }; + 2692E58E92CD45529BC2C2E1 /* simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35CE538121361A4F8AA12E65 /* simple.hpp */; }; + 25E9FB2191B1C9A55A42D2B7 /* simple_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 147C0B9C0051534F2900934B /* simple_floatingpoint.hpp */; }; + 173F9FDF83268AD58C148C51 /* simple_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 866F00997203F640DBC74FF5 /* simple_integer.hpp */; }; + F6AD80FEE2EC2A7A8B6F07AC /* simple_spec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 65EFB5AFD12A1673DA1F9302 /* simple_spec.hpp */; }; + 1D356FE6899E044912E2B2F3 /* tests_format_message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35567BA1212C029F0AD61CF2 /* tests_format_message.hpp */; }; + 6466456B5052DDDAB9C89C2D /* tests_format_simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 530520A1BFCDED24885EF636 /* tests_format_simple.hpp */; }; + 4CEC5245B851E6CB412A88A4 /* json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B51345307A30B43F0C14853 /* json.hpp */; }; + 41DA04FAAD4A0773766981FB /* mutex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B0ADB6049C2AAA47C5A7AA5B /* mutex.hpp */; }; + 334354CC1F189C7F48C7DB7B /* windows_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 02E2A3B26EF34B59F744DE98 /* windows_version.hpp */; }; + 205AB0748C227EF855B3860A /* out_of_memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2FA46B851B79B3384428F334 /* out_of_memory.hpp */; }; + B1CECBD41D3FCE4DE65D48D6 /* parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 201CC7380C99BA7B3516BB8F /* parse.hpp */; }; + 7F4F8FAFEBC1D1CB34560750 /* tests_parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5769367F43A8E0FAEC2ABD2C /* tests_parse.hpp */; }; + 415FB7C32DDD075D16D5C5F4 /* crand.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 902A5FEFFC44C2904567D224 /* crand.hpp */; }; + 88C40885749950389D489034 /* default_engines.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 37FA6719A30B10C02C5DA2FF /* default_engines.hpp */; }; + AD896A5C19C5CA1F22BA47AF /* device.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5C35A7A4489D6D72B1088288 /* device.hpp */; }; + 55B63438C1F194FBCAE6118B /* engine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 04D91076F040D74359ACEB59 /* engine.hpp */; }; + 63AE91F0CFBF39975811CCD6 /* engine_lcg.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D237A503BEB5F59CA7ADB334 /* engine_lcg.hpp */; }; + BBAA1DE727E67DAA30DBFA39 /* random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AAF5EF8D965DB65BFFC8CA71 /* random.hpp */; }; + BD062644297728BDF295A245 /* seed.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC1C8FC498998207C116831B /* seed.hpp */; }; + 5400C6ADC0BD6EE449885A4C /* tests_random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23DEC0E90F88F6F8F858FE13 /* tests_random.hpp */; }; + C911DA6F354D3A333E42B7C2 /* buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F83BDED2E4A3A4A04D0FB9B6 /* buffer.hpp */; }; + 96DE918282CA29F2EB40E944 /* tests_string_buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45162280B1DEEF037A6FF815 /* tests_string_buffer.hpp */; }; + 128D85927EF61AF5073AC99F /* tests_string_utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 218B26640D61AD61F60AC8B4 /* tests_string_utility.hpp */; }; + 8BAA727B7728C314602081AC /* types.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9ABFE19D06DA443F4FFC54D3 /* types.hpp */; }; + 831120C56FBA87F49850A373 /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DB53986E47B92BF5D091CDCD /* utility.hpp */; }; + B3D88DDA9FADD58DC85C158A /* convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8207AAB3EE18525A776AE499 /* convert.hpp */; }; + 3914C69FA5FBB095AEE9B211 /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6807C3C5549BB86DBD5F1222 /* macros.hpp */; }; + 8244DAF1EE594848771622A9 /* tests_string_convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 916B9C9A7D6DE0AA66F0D6A3 /* tests_string_convert.hpp */; }; + B6BF603B227D0972AB47F5D9 /* system_error.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45F80BFB31A2410A1A734925 /* system_error.hpp */; }; + 7D6B98CDE9D02B5472A9CD2C /* test.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC4D6082989F377281BE7482 /* test.hpp */; }; + 63F809934F8CFF3AB85059EF /* test_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F23D20A95EAE222227CD9CAA /* test_macros.hpp */; }; + E23C5F944EA2F21AD77A94F3 /* guid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F16B7083DDBD4773C6DC8483 /* guid.hpp */; }; + FEC34ED86AAB39CE73993B4A /* tests_uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0D88F83FF91BEEE762E0479C /* tests_uuid.hpp */; }; + 4C69A89EB8CE3B2541A7DDFD /* uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1BAEE7B40700BFA4F01EFCB4 /* uuid.hpp */; }; + 5C5785AAC86CF3005129CD61 /* tests_uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2BCE9F1817D0E3280053DA21 /* tests_uuid_namespace.hpp */; }; + A15205F80DE666A616CDD65C /* uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 393DD80225FD68A78E1A51B2 /* uuid_namespace.hpp */; }; ED7E69FCD9ACD6EFC20872B5 /* libopenmpt-mpg123.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FC4593106810656BB1166490 /* libopenmpt-mpg123.dylib */; }; A3ACC5948FDA32887836CE4D /* libopenmpt-vorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F28958BE5E542A19A75A293E /* libopenmpt-vorbis.dylib */; }; 138E8CDBFFBAD80C289C7B1D /* libopenmpt-ogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C2B9A5172E233B7AB766E924 /* libopenmpt-ogg.dylib */; }; @@ -598,6 +700,108 @@ 6E6ED48B5AEC242543E4E2BC /* tuningCollection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuningCollection.cpp"; path = "tuningCollection.cpp"; sourceTree = ""; }; 64866C7650D8436639F78076 /* tuningbase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningbase.h"; path = "tuningbase.h"; sourceTree = ""; }; D7109B26C3239B7F6C0D786C /* tuningcollection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningcollection.h"; path = "tuningcollection.h"; sourceTree = ""; }; + CB5F32E137C5C567C09D6740 /* algorithm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "algorithm.hpp"; path = "algorithm.hpp"; sourceTree = ""; }; + 31ABD04C9D3A9237A636734F /* alloc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "alloc.hpp"; path = "alloc.hpp"; sourceTree = ""; }; + CFA8EC5CBB3CE20424013CB9 /* arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "arithmetic_shift.hpp"; path = "arithmetic_shift.hpp"; sourceTree = ""; }; + 405E9187ACED5272B5E9338A /* array.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "array.hpp"; path = "array.hpp"; sourceTree = ""; }; + 224BB17F8E0FB06F5775E039 /* bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "bit.hpp"; path = "bit.hpp"; sourceTree = ""; }; + 87716DE6731AD5159CB0F094 /* check_platform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "check_platform.hpp"; path = "check_platform.hpp"; sourceTree = ""; }; + 74155F7CE031516DA909BEDA /* compiletime_warning.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "compiletime_warning.hpp"; path = "compiletime_warning.hpp"; sourceTree = ""; }; + 6234A41DCEFA003A17568F9C /* constexpr_throw.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "constexpr_throw.hpp"; path = "constexpr_throw.hpp"; sourceTree = ""; }; + 5B1990F3479683367013844A /* detect.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect.hpp"; path = "detect.hpp"; sourceTree = ""; }; + 37739C93A339F9AFEC948712 /* detect_compiler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_compiler.hpp"; path = "detect_compiler.hpp"; sourceTree = ""; }; + 980934EB047A3664CD98B0EC /* detect_libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libc.hpp"; path = "detect_libc.hpp"; sourceTree = ""; }; + 4A0FB859B64A181DBF3F95AC /* detect_libcxx.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libcxx.hpp"; path = "detect_libcxx.hpp"; sourceTree = ""; }; + 4402303AB067C3C039406599 /* detect_os.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_os.hpp"; path = "detect_os.hpp"; sourceTree = ""; }; + DA450125468161E84F76DE77 /* detect_quirks.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_quirks.hpp"; path = "detect_quirks.hpp"; sourceTree = ""; }; + A3CED61B0F0A37DF18FFB36E /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 950801B4012364554A4574E9 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + CEBD9467BA3A88AAE3B788BE /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + D58929FFC1DB00EFAAFA3DFF /* math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "math.hpp"; path = "math.hpp"; sourceTree = ""; }; + 9D0B894289887C85B2057D99 /* memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "memory.hpp"; path = "memory.hpp"; sourceTree = ""; }; + 93EE5781FF53EB07882C8DE0 /* namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "namespace.hpp"; path = "namespace.hpp"; sourceTree = ""; }; + 1B7BDC3F87953FE1D0B74F75 /* numeric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "numeric.hpp"; path = "numeric.hpp"; sourceTree = ""; }; + CBC19C5637DCFFF780FE0F8C /* pointer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "pointer.hpp"; path = "pointer.hpp"; sourceTree = ""; }; + 3348E2A01FC6323A08BEF0D1 /* preprocessor.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "preprocessor.hpp"; path = "preprocessor.hpp"; sourceTree = ""; }; + CFCA30133B0691D644FB0D66 /* saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_cast.hpp"; path = "saturate_cast.hpp"; sourceTree = ""; }; + 0E4DA715FAF50E45238C2AC4 /* saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_round.hpp"; path = "saturate_round.hpp"; sourceTree = ""; }; + E7FF40BDD37C3400FCF93414 /* secure.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "secure.hpp"; path = "secure.hpp"; sourceTree = ""; }; + 3BA460B82738566090FCAF14 /* semantic_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "semantic_version.hpp"; path = "semantic_version.hpp"; sourceTree = ""; }; + 2D78A5C5993E02E2E2999044 /* source_location.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "source_location.hpp"; path = "source_location.hpp"; sourceTree = ""; }; + CFB31F52BB05F741A4243452 /* span.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "span.hpp"; path = "span.hpp"; sourceTree = ""; }; + B5A0EB57210A81BAAA4D2F65 /* tests_base_arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_arithmetic_shift.hpp"; path = "tests_base_arithmetic_shift.hpp"; sourceTree = ""; }; + 8F55448E7BFF799D64D081B8 /* tests_base_bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_bit.hpp"; path = "tests_base_bit.hpp"; sourceTree = ""; }; + DC33C46D481BAF635109B1DF /* tests_base_math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_math.hpp"; path = "tests_base_math.hpp"; sourceTree = ""; }; + E793E1BDD3947538FC5CE2BC /* tests_base_saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_cast.hpp"; path = "tests_base_saturate_cast.hpp"; sourceTree = ""; }; + 1DD48AA189F29E6ED2BFA480 /* tests_base_saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_round.hpp"; path = "tests_base_saturate_round.hpp"; sourceTree = ""; }; + 2B0E58AC17FAEF1B8070AF6E /* tests_base_wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_wrapping_divide.hpp"; path = "tests_base_wrapping_divide.hpp"; sourceTree = ""; }; + B7AE97A523C9FA466CEB0ADB /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 8BAE8EC4F7C8F16540EB01FA /* version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "version.hpp"; path = "version.hpp"; sourceTree = ""; }; + E3933AE14F5A97FD98B52560 /* wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "wrapping_divide.hpp"; path = "wrapping_divide.hpp"; sourceTree = ""; }; + F0B09491DC185B5F45846F75 /* base64.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64.hpp"; path = "base64.hpp"; sourceTree = ""; }; + A58508BF11F60A38DA1485C0 /* base64url.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64url.hpp"; path = "base64url.hpp"; sourceTree = ""; }; + 14649C3680F35D2189EF3E39 /* hex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hex.hpp"; path = "hex.hpp"; sourceTree = ""; }; + 8BA7F3577751296760223182 /* tests_binary.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_binary.hpp"; path = "tests_binary.hpp"; sourceTree = ""; }; + 7F168852EBA5493DF4A12A55 /* libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libc.hpp"; path = "libc.hpp"; sourceTree = ""; }; + 3D019BE2295372D21272AFE2 /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + B4E39A4BA04B611909B7752F /* windows.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows.hpp"; path = "windows.hpp"; sourceTree = ""; }; + 9E7035588A57F74F33A85D6D /* crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crc.hpp"; path = "crc.hpp"; sourceTree = ""; }; + AC2E9BF998D70229C16D1EA8 /* tests_crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crc.hpp"; path = "tests_crc.hpp"; sourceTree = ""; }; + FB92CED56703D14E30224BD7 /* exception.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception.hpp"; path = "exception.hpp"; sourceTree = ""; }; + D277709CBEF463DFE77164F3 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hash.hpp"; path = "hash.hpp"; sourceTree = ""; }; + FC9FF0F0682FB2DB712B93F3 /* jwk.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "jwk.hpp"; path = "jwk.hpp"; sourceTree = ""; }; + 1FDC6ACC0B86A0DBF456A8F6 /* tests_crypto.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crypto.hpp"; path = "tests_crypto.hpp"; sourceTree = ""; }; + BB351E1027C5DFFA30C1C012 /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + 7B378CD2E7FDE8EE30597751 /* nlohmann_json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "nlohmann_json.hpp"; path = "nlohmann_json.hpp"; sourceTree = ""; }; + 352D9BC9A1F3F7E5EA4E8648 /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 271A49A1937FDC271C587E00 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + FC15C013E8AC02C9916179C9 /* tests_endian_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_floatingpoint.hpp"; path = "tests_endian_floatingpoint.hpp"; sourceTree = ""; }; + 6E4E7DA05A24049E43CE1EF1 /* tests_endian_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_integer.hpp"; path = "tests_endian_integer.hpp"; sourceTree = ""; }; + 53F2C88C3F317308E8B34F3A /* environment.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "environment.hpp"; path = "environment.hpp"; sourceTree = ""; }; + 922031457EE0C1E9E7FDA9F4 /* exception_text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception_text.hpp"; path = "exception_text.hpp"; sourceTree = ""; }; + 5A601355C6D255710F678BF5 /* default_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_floatingpoint.hpp"; path = "default_floatingpoint.hpp"; sourceTree = ""; }; + D2B9D42D3ED6C61E07AE338C /* default_formatter.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_formatter.hpp"; path = "default_formatter.hpp"; sourceTree = ""; }; + 45D34C9FB1E4F4453A368785 /* default_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_integer.hpp"; path = "default_integer.hpp"; sourceTree = ""; }; + D080563FBC144CE725D9A59B /* default_string.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_string.hpp"; path = "default_string.hpp"; sourceTree = ""; }; + AA708BBB16D61E429FAEC01A /* helpers.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "helpers.hpp"; path = "helpers.hpp"; sourceTree = ""; }; + 1E1DCE3C8A8261C3135B039C /* message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message.hpp"; path = "message.hpp"; sourceTree = ""; }; + 6422BACB50B6AF73B97A0928 /* message_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message_macros.hpp"; path = "message_macros.hpp"; sourceTree = ""; }; + 35CE538121361A4F8AA12E65 /* simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple.hpp"; path = "simple.hpp"; sourceTree = ""; }; + 147C0B9C0051534F2900934B /* simple_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_floatingpoint.hpp"; path = "simple_floatingpoint.hpp"; sourceTree = ""; }; + 866F00997203F640DBC74FF5 /* simple_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_integer.hpp"; path = "simple_integer.hpp"; sourceTree = ""; }; + 65EFB5AFD12A1673DA1F9302 /* simple_spec.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_spec.hpp"; path = "simple_spec.hpp"; sourceTree = ""; }; + 35567BA1212C029F0AD61CF2 /* tests_format_message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_message.hpp"; path = "tests_format_message.hpp"; sourceTree = ""; }; + 530520A1BFCDED24885EF636 /* tests_format_simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_simple.hpp"; path = "tests_format_simple.hpp"; sourceTree = ""; }; + 1B51345307A30B43F0C14853 /* json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "json.hpp"; path = "json.hpp"; sourceTree = ""; }; + B0ADB6049C2AAA47C5A7AA5B /* mutex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mutex.hpp"; path = "mutex.hpp"; sourceTree = ""; }; + 02E2A3B26EF34B59F744DE98 /* windows_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows_version.hpp"; path = "windows_version.hpp"; sourceTree = ""; }; + 2FA46B851B79B3384428F334 /* out_of_memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "out_of_memory.hpp"; path = "out_of_memory.hpp"; sourceTree = ""; }; + 201CC7380C99BA7B3516BB8F /* parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "parse.hpp"; path = "parse.hpp"; sourceTree = ""; }; + 5769367F43A8E0FAEC2ABD2C /* tests_parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_parse.hpp"; path = "tests_parse.hpp"; sourceTree = ""; }; + 902A5FEFFC44C2904567D224 /* crand.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crand.hpp"; path = "crand.hpp"; sourceTree = ""; }; + 37FA6719A30B10C02C5DA2FF /* default_engines.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_engines.hpp"; path = "default_engines.hpp"; sourceTree = ""; }; + 5C35A7A4489D6D72B1088288 /* device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "device.hpp"; path = "device.hpp"; sourceTree = ""; }; + 04D91076F040D74359ACEB59 /* engine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine.hpp"; path = "engine.hpp"; sourceTree = ""; }; + D237A503BEB5F59CA7ADB334 /* engine_lcg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine_lcg.hpp"; path = "engine_lcg.hpp"; sourceTree = ""; }; + AAF5EF8D965DB65BFFC8CA71 /* random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "random.hpp"; path = "random.hpp"; sourceTree = ""; }; + AC1C8FC498998207C116831B /* seed.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "seed.hpp"; path = "seed.hpp"; sourceTree = ""; }; + 23DEC0E90F88F6F8F858FE13 /* tests_random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_random.hpp"; path = "tests_random.hpp"; sourceTree = ""; }; + F83BDED2E4A3A4A04D0FB9B6 /* buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "buffer.hpp"; path = "buffer.hpp"; sourceTree = ""; }; + 45162280B1DEEF037A6FF815 /* tests_string_buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_buffer.hpp"; path = "tests_string_buffer.hpp"; sourceTree = ""; }; + 218B26640D61AD61F60AC8B4 /* tests_string_utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_utility.hpp"; path = "tests_string_utility.hpp"; sourceTree = ""; }; + 9ABFE19D06DA443F4FFC54D3 /* types.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "types.hpp"; path = "types.hpp"; sourceTree = ""; }; + DB53986E47B92BF5D091CDCD /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 8207AAB3EE18525A776AE499 /* convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "convert.hpp"; path = "convert.hpp"; sourceTree = ""; }; + 6807C3C5549BB86DBD5F1222 /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + 916B9C9A7D6DE0AA66F0D6A3 /* tests_string_convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_convert.hpp"; path = "tests_string_convert.hpp"; sourceTree = ""; }; + 45F80BFB31A2410A1A734925 /* system_error.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "system_error.hpp"; path = "system_error.hpp"; sourceTree = ""; }; + AC4D6082989F377281BE7482 /* test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test.hpp"; path = "test.hpp"; sourceTree = ""; }; + F23D20A95EAE222227CD9CAA /* test_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test_macros.hpp"; path = "test_macros.hpp"; sourceTree = ""; }; + F16B7083DDBD4773C6DC8483 /* guid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "guid.hpp"; path = "guid.hpp"; sourceTree = ""; }; + 0D88F83FF91BEEE762E0479C /* tests_uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid.hpp"; path = "tests_uuid.hpp"; sourceTree = ""; }; + 1BAEE7B40700BFA4F01EFCB4 /* uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "uuid.hpp"; path = "uuid.hpp"; sourceTree = ""; }; + 2BCE9F1817D0E3280053DA21 /* tests_uuid_namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid_namespace.hpp"; path = "tests_uuid_namespace.hpp"; sourceTree = ""; }; + 393DD80225FD68A78E1A51B2 /* uuid_namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "uuid_namespace.hpp"; path = "uuid_namespace.hpp"; sourceTree = ""; }; C1F3343CADAE24E856669D32 /* liblibopenmpt.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = "liblibopenmpt.dylib"; path = "liblibopenmpt.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; C6AF7A2032CC6C11FBA3D97E /* mpg123.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "mpg123.xcodeproj"; path = "ext/mpg123.xcodeproj"; sourceTree = SOURCE_ROOT; }; BC5DDB23287ACD14F1513A82 /* vorbis.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "vorbis.xcodeproj"; path = "ext/vorbis.xcodeproj"; sourceTree = SOURCE_ROOT; }; @@ -605,7 +809,7 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 3C7629FAA88B9750314871B1 /* Frameworks */ = { + 02DDD3686EF241BFF7AE1B20 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -626,8 +830,9 @@ 4FEAB79B3BFA636CA4B3C88A /* soundbase */, 5A30E327C6F216B20FA3A53E /* sounddsp */, E961CB335524FFBD9ED48D4A /* soundlib */, - 9E6A03080A2D379253DDC51E /* Products */, - B533D44521F607D06AA6965C /* Projects */, + 526061A83EEFEA71E70DFF6C /* src */, + E40300BC50C633469976C2D2 /* Products */, + FBCCD0F9678F0484B03F9310 /* Projects */, ); name = "libopenmpt"; path = "."; @@ -961,15 +1166,440 @@ path = "dmo"; sourceTree = ""; }; - 9E6A03080A2D379253DDC51E /* Products */ = { + 526061A83EEFEA71E70DFF6C /* src */ = { isa = PBXGroup; children = ( + F3AC3E46DFD18DC6081D7356 /* mpt */, + ); + name = "src"; + path = "../../src"; + sourceTree = ""; + }; + F3AC3E46DFD18DC6081D7356 /* mpt */ = { + isa = PBXGroup; + children = ( + 1E2A22788A4209A253EF983B /* base */, + C53BE9A9311FF8E93A222626 /* binary */, + 9F15441C8B3B0E837481934E /* check */, + 008632CAEC40227695F89AC0 /* crc */, + 8667A838F24AB778FB4DE5B4 /* crypto */, + FF2FC9176B13D85774160694 /* detect */, + 3A25111FA608205FAF0B4E9B /* endian */, + 21F767D10DDE29C9B62E90E6 /* environment */, + 794A3DD3E5D9FEBDEED5DFD5 /* exception_text */, + F257BC185E3BCB58673EF994 /* format */, + 5B798109C7916833903EF8CC /* json */, + 379864F923BE2E600C04B42B /* mutex */, + D5CCC18441B0D0C44AB3FE00 /* osinfo */, + 05A98A26F1FA6116DA199F26 /* out_of_memory */, + 7F88355A6BAEFFC054F4848C /* parse */, + 02880C336E6B1B73776E49AF /* random */, + E15A2FCE4D3E3E0E56416C4A /* string */, + 3B0EF1FBA79DB2E6B09993FE /* string_convert */, + 1A0A3C3886CE3A284F346BF2 /* system_error */, + 06F9146F7211FC983BBE8B32 /* test */, + 626839ACCE8020D6972DB06F /* uuid */, + 2DE7FF1A9976C105A272A21D /* uuid_namespace */, + ); + name = "mpt"; + path = "mpt"; + sourceTree = ""; + }; + 1E2A22788A4209A253EF983B /* base */ = { + isa = PBXGroup; + children = ( + CB5F32E137C5C567C09D6740 /* algorithm.hpp */, + 31ABD04C9D3A9237A636734F /* alloc.hpp */, + CFA8EC5CBB3CE20424013CB9 /* arithmetic_shift.hpp */, + 405E9187ACED5272B5E9338A /* array.hpp */, + 224BB17F8E0FB06F5775E039 /* bit.hpp */, + 87716DE6731AD5159CB0F094 /* check_platform.hpp */, + 74155F7CE031516DA909BEDA /* compiletime_warning.hpp */, + 6234A41DCEFA003A17568F9C /* constexpr_throw.hpp */, + 5B1990F3479683367013844A /* detect.hpp */, + 37739C93A339F9AFEC948712 /* detect_compiler.hpp */, + 980934EB047A3664CD98B0EC /* detect_libc.hpp */, + 4A0FB859B64A181DBF3F95AC /* detect_libcxx.hpp */, + 4402303AB067C3C039406599 /* detect_os.hpp */, + DA450125468161E84F76DE77 /* detect_quirks.hpp */, + A3CED61B0F0A37DF18FFB36E /* floatingpoint.hpp */, + 950801B4012364554A4574E9 /* integer.hpp */, + CEBD9467BA3A88AAE3B788BE /* macros.hpp */, + D58929FFC1DB00EFAAFA3DFF /* math.hpp */, + 9D0B894289887C85B2057D99 /* memory.hpp */, + 93EE5781FF53EB07882C8DE0 /* namespace.hpp */, + 1B7BDC3F87953FE1D0B74F75 /* numeric.hpp */, + CBC19C5637DCFFF780FE0F8C /* pointer.hpp */, + 3348E2A01FC6323A08BEF0D1 /* preprocessor.hpp */, + CFCA30133B0691D644FB0D66 /* saturate_cast.hpp */, + 0E4DA715FAF50E45238C2AC4 /* saturate_round.hpp */, + E7FF40BDD37C3400FCF93414 /* secure.hpp */, + 3BA460B82738566090FCAF14 /* semantic_version.hpp */, + 2D78A5C5993E02E2E2999044 /* source_location.hpp */, + CFB31F52BB05F741A4243452 /* span.hpp */, + FC350F3D68EF79E7F14E94C1 /* tests */, + B7AE97A523C9FA466CEB0ADB /* utility.hpp */, + 8BAE8EC4F7C8F16540EB01FA /* version.hpp */, + E3933AE14F5A97FD98B52560 /* wrapping_divide.hpp */, + ); + name = "base"; + path = "base"; + sourceTree = ""; + }; + FC350F3D68EF79E7F14E94C1 /* tests */ = { + isa = PBXGroup; + children = ( + B5A0EB57210A81BAAA4D2F65 /* tests_base_arithmetic_shift.hpp */, + 8F55448E7BFF799D64D081B8 /* tests_base_bit.hpp */, + DC33C46D481BAF635109B1DF /* tests_base_math.hpp */, + E793E1BDD3947538FC5CE2BC /* tests_base_saturate_cast.hpp */, + 1DD48AA189F29E6ED2BFA480 /* tests_base_saturate_round.hpp */, + 2B0E58AC17FAEF1B8070AF6E /* tests_base_wrapping_divide.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + C53BE9A9311FF8E93A222626 /* binary */ = { + isa = PBXGroup; + children = ( + F0B09491DC185B5F45846F75 /* base64.hpp */, + A58508BF11F60A38DA1485C0 /* base64url.hpp */, + 14649C3680F35D2189EF3E39 /* hex.hpp */, + CE3758AA3AFC569A03628764 /* tests */, + ); + name = "binary"; + path = "binary"; + sourceTree = ""; + }; + CE3758AA3AFC569A03628764 /* tests */ = { + isa = PBXGroup; + children = ( + 8BA7F3577751296760223182 /* tests_binary.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 9F15441C8B3B0E837481934E /* check */ = { + isa = PBXGroup; + children = ( + 7F168852EBA5493DF4A12A55 /* libc.hpp */, + 3D019BE2295372D21272AFE2 /* mfc.hpp */, + B4E39A4BA04B611909B7752F /* windows.hpp */, + ); + name = "check"; + path = "check"; + sourceTree = ""; + }; + 008632CAEC40227695F89AC0 /* crc */ = { + isa = PBXGroup; + children = ( + 9E7035588A57F74F33A85D6D /* crc.hpp */, + 3C338CC3286F8F2D9181A724 /* tests */, + ); + name = "crc"; + path = "crc"; + sourceTree = ""; + }; + 3C338CC3286F8F2D9181A724 /* tests */ = { + isa = PBXGroup; + children = ( + AC2E9BF998D70229C16D1EA8 /* tests_crc.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 8667A838F24AB778FB4DE5B4 /* crypto */ = { + isa = PBXGroup; + children = ( + FB92CED56703D14E30224BD7 /* exception.hpp */, + D277709CBEF463DFE77164F3 /* hash.hpp */, + FC9FF0F0682FB2DB712B93F3 /* jwk.hpp */, + 861E2DB4F2E22BA4BB485C6E /* tests */, + ); + name = "crypto"; + path = "crypto"; + sourceTree = ""; + }; + 861E2DB4F2E22BA4BB485C6E /* tests */ = { + isa = PBXGroup; + children = ( + 1FDC6ACC0B86A0DBF456A8F6 /* tests_crypto.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + FF2FC9176B13D85774160694 /* detect */ = { + isa = PBXGroup; + children = ( + BB351E1027C5DFFA30C1C012 /* mfc.hpp */, + 7B378CD2E7FDE8EE30597751 /* nlohmann_json.hpp */, + ); + name = "detect"; + path = "detect"; + sourceTree = ""; + }; + 3A25111FA608205FAF0B4E9B /* endian */ = { + isa = PBXGroup; + children = ( + 352D9BC9A1F3F7E5EA4E8648 /* floatingpoint.hpp */, + 271A49A1937FDC271C587E00 /* integer.hpp */, + 78658F09E4298EF9AD8FBEC3 /* tests */, + ); + name = "endian"; + path = "endian"; + sourceTree = ""; + }; + 78658F09E4298EF9AD8FBEC3 /* tests */ = { + isa = PBXGroup; + children = ( + FC15C013E8AC02C9916179C9 /* tests_endian_floatingpoint.hpp */, + 6E4E7DA05A24049E43CE1EF1 /* tests_endian_integer.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 21F767D10DDE29C9B62E90E6 /* environment */ = { + isa = PBXGroup; + children = ( + 53F2C88C3F317308E8B34F3A /* environment.hpp */, + ); + name = "environment"; + path = "environment"; + sourceTree = ""; + }; + 794A3DD3E5D9FEBDEED5DFD5 /* exception_text */ = { + isa = PBXGroup; + children = ( + 922031457EE0C1E9E7FDA9F4 /* exception_text.hpp */, + ); + name = "exception_text"; + path = "exception_text"; + sourceTree = ""; + }; + F257BC185E3BCB58673EF994 /* format */ = { + isa = PBXGroup; + children = ( + 5A601355C6D255710F678BF5 /* default_floatingpoint.hpp */, + D2B9D42D3ED6C61E07AE338C /* default_formatter.hpp */, + 45D34C9FB1E4F4453A368785 /* default_integer.hpp */, + D080563FBC144CE725D9A59B /* default_string.hpp */, + AA708BBB16D61E429FAEC01A /* helpers.hpp */, + 1E1DCE3C8A8261C3135B039C /* message.hpp */, + 6422BACB50B6AF73B97A0928 /* message_macros.hpp */, + 35CE538121361A4F8AA12E65 /* simple.hpp */, + 147C0B9C0051534F2900934B /* simple_floatingpoint.hpp */, + 866F00997203F640DBC74FF5 /* simple_integer.hpp */, + 65EFB5AFD12A1673DA1F9302 /* simple_spec.hpp */, + 5041C724BC05C614856BF6DE /* tests */, + ); + name = "format"; + path = "format"; + sourceTree = ""; + }; + 5041C724BC05C614856BF6DE /* tests */ = { + isa = PBXGroup; + children = ( + 35567BA1212C029F0AD61CF2 /* tests_format_message.hpp */, + 530520A1BFCDED24885EF636 /* tests_format_simple.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 5B798109C7916833903EF8CC /* json */ = { + isa = PBXGroup; + children = ( + 1B51345307A30B43F0C14853 /* json.hpp */, + ); + name = "json"; + path = "json"; + sourceTree = ""; + }; + 379864F923BE2E600C04B42B /* mutex */ = { + isa = PBXGroup; + children = ( + B0ADB6049C2AAA47C5A7AA5B /* mutex.hpp */, + ); + name = "mutex"; + path = "mutex"; + sourceTree = ""; + }; + D5CCC18441B0D0C44AB3FE00 /* osinfo */ = { + isa = PBXGroup; + children = ( + 02E2A3B26EF34B59F744DE98 /* windows_version.hpp */, + ); + name = "osinfo"; + path = "osinfo"; + sourceTree = ""; + }; + 05A98A26F1FA6116DA199F26 /* out_of_memory */ = { + isa = PBXGroup; + children = ( + 2FA46B851B79B3384428F334 /* out_of_memory.hpp */, + ); + name = "out_of_memory"; + path = "out_of_memory"; + sourceTree = ""; + }; + 7F88355A6BAEFFC054F4848C /* parse */ = { + isa = PBXGroup; + children = ( + 201CC7380C99BA7B3516BB8F /* parse.hpp */, + 2444BC4B102B7E43B97BE460 /* tests */, + ); + name = "parse"; + path = "parse"; + sourceTree = ""; + }; + 2444BC4B102B7E43B97BE460 /* tests */ = { + isa = PBXGroup; + children = ( + 5769367F43A8E0FAEC2ABD2C /* tests_parse.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 02880C336E6B1B73776E49AF /* random */ = { + isa = PBXGroup; + children = ( + 902A5FEFFC44C2904567D224 /* crand.hpp */, + 37FA6719A30B10C02C5DA2FF /* default_engines.hpp */, + 5C35A7A4489D6D72B1088288 /* device.hpp */, + 04D91076F040D74359ACEB59 /* engine.hpp */, + D237A503BEB5F59CA7ADB334 /* engine_lcg.hpp */, + AAF5EF8D965DB65BFFC8CA71 /* random.hpp */, + AC1C8FC498998207C116831B /* seed.hpp */, + 0A63AAF17627A9E13F8DD9AB /* tests */, + ); + name = "random"; + path = "random"; + sourceTree = ""; + }; + 0A63AAF17627A9E13F8DD9AB /* tests */ = { + isa = PBXGroup; + children = ( + 23DEC0E90F88F6F8F858FE13 /* tests_random.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + E15A2FCE4D3E3E0E56416C4A /* string */ = { + isa = PBXGroup; + children = ( + F83BDED2E4A3A4A04D0FB9B6 /* buffer.hpp */, + 9D0E2C7F09D32A6FD2385B39 /* tests */, + 9ABFE19D06DA443F4FFC54D3 /* types.hpp */, + DB53986E47B92BF5D091CDCD /* utility.hpp */, + ); + name = "string"; + path = "string"; + sourceTree = ""; + }; + 9D0E2C7F09D32A6FD2385B39 /* tests */ = { + isa = PBXGroup; + children = ( + 45162280B1DEEF037A6FF815 /* tests_string_buffer.hpp */, + 218B26640D61AD61F60AC8B4 /* tests_string_utility.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 3B0EF1FBA79DB2E6B09993FE /* string_convert */ = { + isa = PBXGroup; + children = ( + 8207AAB3EE18525A776AE499 /* convert.hpp */, + 6807C3C5549BB86DBD5F1222 /* macros.hpp */, + 023245396EA247B237C1C13A /* tests */, + ); + name = "string_convert"; + path = "string_convert"; + sourceTree = ""; + }; + 023245396EA247B237C1C13A /* tests */ = { + isa = PBXGroup; + children = ( + 916B9C9A7D6DE0AA66F0D6A3 /* tests_string_convert.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 1A0A3C3886CE3A284F346BF2 /* system_error */ = { + isa = PBXGroup; + children = ( + 45F80BFB31A2410A1A734925 /* system_error.hpp */, + ); + name = "system_error"; + path = "system_error"; + sourceTree = ""; + }; + 06F9146F7211FC983BBE8B32 /* test */ = { + isa = PBXGroup; + children = ( + AC4D6082989F377281BE7482 /* test.hpp */, + F23D20A95EAE222227CD9CAA /* test_macros.hpp */, + ); + name = "test"; + path = "test"; + sourceTree = ""; + }; + 626839ACCE8020D6972DB06F /* uuid */ = { + isa = PBXGroup; + children = ( + F16B7083DDBD4773C6DC8483 /* guid.hpp */, + 5EFAAD5DCAB31808531333E2 /* tests */, + 1BAEE7B40700BFA4F01EFCB4 /* uuid.hpp */, + ); + name = "uuid"; + path = "uuid"; + sourceTree = ""; + }; + 5EFAAD5DCAB31808531333E2 /* tests */ = { + isa = PBXGroup; + children = ( + 0D88F83FF91BEEE762E0479C /* tests_uuid.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 2DE7FF1A9976C105A272A21D /* uuid_namespace */ = { + isa = PBXGroup; + children = ( + F058283D5CC92AB625E8A43E /* tests */, + 393DD80225FD68A78E1A51B2 /* uuid_namespace.hpp */, + ); + name = "uuid_namespace"; + path = "uuid_namespace"; + sourceTree = ""; + }; + F058283D5CC92AB625E8A43E /* tests */ = { + isa = PBXGroup; + children = ( + 2BCE9F1817D0E3280053DA21 /* tests_uuid_namespace.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + E40300BC50C633469976C2D2 /* Products */ = { + isa = PBXGroup; + children = ( C1F3343CADAE24E856669D32 /* liblibopenmpt.dylib */, ); name = "Products"; sourceTree = ""; }; - B533D44521F607D06AA6965C /* Projects */ = { + FBCCD0F9678F0484B03F9310 /* Projects */ = { isa = PBXGroup; children = ( C6AF7A2032CC6C11FBA3D97E /* mpg123.xcodeproj */, @@ -1009,11 +1639,11 @@ /* Begin PBXNativeTarget section */ 87EFAFF2F3FCDDD87CE3D9C3 /* libopenmpt */ = { isa = PBXNativeTarget; - buildConfigurationList = 388822CDA49D90232D5A6A84 /* Build configuration list for PBXNativeTarget "libopenmpt" */; + buildConfigurationList = FEEECC3B6A043B92F3C014F3 /* Build configuration list for PBXNativeTarget "libopenmpt" */; buildPhases = ( - 9A677A31067DE8878F39C2E8 /* Resources */, - 120DD2957E2240EC07DF194D /* Sources */, - 3C7629FAA88B9750314871B1 /* Frameworks */, + 60CE24A0CCE392F655A06C57 /* Resources */, + D8737C044489EA5ACD45C4BB /* Sources */, + 02DDD3686EF241BFF7AE1B20 /* Frameworks */, ); buildRules = ( ); @@ -1083,7 +1713,7 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 9A677A31067DE8878F39C2E8 /* Resources */ = { + 60CE24A0CCE392F655A06C57 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1093,7 +1723,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 120DD2957E2240EC07DF194D /* Sources */ = { + D8737C044489EA5ACD45C4BB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1310,6 +1940,17 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + EXCLUDED_SOURCE_FILE_NAMES = ( + "*/src/mpt/crypto/exception.hpp", + "*/src/mpt/crypto/hash.hpp", + "*/src/mpt/crypto/jwk.hpp", + "*/src/mpt/crypto/tests/tests_crypto.hpp", + "*/src/mpt/json/json.hpp", + "*/src/mpt/test/test.hpp", + "*/src/mpt/test/test_macros.hpp", + "*/src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp", + "*/src/mpt/uuid_namespace/uuid_namespace.hpp", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -1334,6 +1975,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1371,6 +2013,17 @@ CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + EXCLUDED_SOURCE_FILE_NAMES = ( + "*/src/mpt/crypto/exception.hpp", + "*/src/mpt/crypto/hash.hpp", + "*/src/mpt/crypto/jwk.hpp", + "*/src/mpt/crypto/tests/tests_crypto.hpp", + "*/src/mpt/json/json.hpp", + "*/src/mpt/test/test.hpp", + "*/src/mpt/test/test_macros.hpp", + "*/src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp", + "*/src/mpt/uuid_namespace/uuid_namespace.hpp", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 3; @@ -1393,6 +2046,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1417,7 +2071,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 388822CDA49D90232D5A6A84 /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { + FEEECC3B6A043B92F3C014F3 /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { isa = XCConfigurationList; buildConfigurations = ( 09B8609D754722887E4303A0 /* Debug */, Index: build/xcode9-macosx/ext/vorbis.xcodeproj/project.pbxproj =================================================================== --- build/xcode9-macosx/ext/vorbis.xcodeproj/project.pbxproj (revision 14776) +++ build/xcode9-macosx/ext/vorbis.xcodeproj/project.pbxproj (working copy) @@ -195,7 +195,7 @@ B52E177AA13EC34A0AF82769 /* vorbis */, ); name = "include"; - path = "../../include"; + path = "../../../include"; sourceTree = ""; }; B52E177AA13EC34A0AF82769 /* vorbis */ = { Index: build/xcode9-macosx/libopenmpt.xcodeproj/project.pbxproj =================================================================== --- build/xcode9-macosx/libopenmpt.xcodeproj/project.pbxproj (revision 14776) +++ build/xcode9-macosx/libopenmpt.xcodeproj/project.pbxproj (working copy) @@ -277,6 +277,108 @@ 7F669750EB773FF774C9D136 /* tuningCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED48B5AEC242543E4E2BC /* tuningCollection.cpp */; }; 35D73C77A13CD0FD2A1572D6 /* tuningbase.h in Headers */ = {isa = PBXBuildFile; fileRef = 64866C7650D8436639F78076 /* tuningbase.h */; }; FF0E654E6BD5C16AB43050CD /* tuningcollection.h in Headers */ = {isa = PBXBuildFile; fileRef = D7109B26C3239B7F6C0D786C /* tuningcollection.h */; }; + 9C15752988BEDC58B154F8D7 /* algorithm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB5F32E137C5C567C09D6740 /* algorithm.hpp */; }; + 427834F72E8B3450D774113D /* alloc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 31ABD04C9D3A9237A636734F /* alloc.hpp */; }; + 00AE5F976C954A8D75834C09 /* arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFA8EC5CBB3CE20424013CB9 /* arithmetic_shift.hpp */; }; + B16C5A989D7F5AF1466937DE /* array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 405E9187ACED5272B5E9338A /* array.hpp */; }; + 93D2D2157F3A99E3E8A5ADF9 /* bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 224BB17F8E0FB06F5775E039 /* bit.hpp */; }; + 78ED28CCE4091BBDADE1872A /* check_platform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 87716DE6731AD5159CB0F094 /* check_platform.hpp */; }; + 25C236D01182C7747A9FAF7F /* compiletime_warning.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74155F7CE031516DA909BEDA /* compiletime_warning.hpp */; }; + 53CD658F3F779B9E2848A3B9 /* constexpr_throw.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6234A41DCEFA003A17568F9C /* constexpr_throw.hpp */; }; + CC485B3F38B95DB801D8D740 /* detect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5B1990F3479683367013844A /* detect.hpp */; }; + 48990F11344345201D144D3B /* detect_compiler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 37739C93A339F9AFEC948712 /* detect_compiler.hpp */; }; + C9FB6C23B58F62CB1E54BC7F /* detect_libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 980934EB047A3664CD98B0EC /* detect_libc.hpp */; }; + FB84DB9FE7C3851B9046624D /* detect_libcxx.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4A0FB859B64A181DBF3F95AC /* detect_libcxx.hpp */; }; + B52B88A6A1D4EFD5CA6A0B55 /* detect_os.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4402303AB067C3C039406599 /* detect_os.hpp */; }; + 8B553D277794E7A22017C4D4 /* detect_quirks.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DA450125468161E84F76DE77 /* detect_quirks.hpp */; }; + F4C3A4BDE0024F3989852B6B /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A3CED61B0F0A37DF18FFB36E /* floatingpoint.hpp */; }; + 66C8DD7952462E133B3EECAA /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 950801B4012364554A4574E9 /* integer.hpp */; }; + 1FAD27708B1D2AE9543CA471 /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CEBD9467BA3A88AAE3B788BE /* macros.hpp */; }; + 46A92A05B20EBE8B3BE75F64 /* math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D58929FFC1DB00EFAAFA3DFF /* math.hpp */; }; + 4EF4AFC3BA64B23C83832CC5 /* memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9D0B894289887C85B2057D99 /* memory.hpp */; }; + 6421CBB750CA32E779604E66 /* namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 93EE5781FF53EB07882C8DE0 /* namespace.hpp */; }; + ACBE43CB983C9464813452FC /* numeric.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B7BDC3F87953FE1D0B74F75 /* numeric.hpp */; }; + 5CB3ABFD4831FC963129BA2E /* pointer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CBC19C5637DCFFF780FE0F8C /* pointer.hpp */; }; + 6423BD90D03465375986F776 /* preprocessor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3348E2A01FC6323A08BEF0D1 /* preprocessor.hpp */; }; + A03B3F6F8C7AE9EA35FDC51C /* saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFCA30133B0691D644FB0D66 /* saturate_cast.hpp */; }; + 5F15AC7BCB319E6C94090BDA /* saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0E4DA715FAF50E45238C2AC4 /* saturate_round.hpp */; }; + D8261E60449720D90DB69A61 /* secure.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E7FF40BDD37C3400FCF93414 /* secure.hpp */; }; + ECAC758D58946083618262FF /* semantic_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BA460B82738566090FCAF14 /* semantic_version.hpp */; }; + FE273083EAD16592D3A26DAD /* source_location.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2D78A5C5993E02E2E2999044 /* source_location.hpp */; }; + 801F8C8CEC841F13755DC1EB /* span.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFB31F52BB05F741A4243452 /* span.hpp */; }; + C68BD202B2B81E34DB99C144 /* tests_base_arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B5A0EB57210A81BAAA4D2F65 /* tests_base_arithmetic_shift.hpp */; }; + 40FBF82DACB8A16435838DCC /* tests_base_bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F55448E7BFF799D64D081B8 /* tests_base_bit.hpp */; }; + CD858060B9F0406C620CA6D1 /* tests_base_math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DC33C46D481BAF635109B1DF /* tests_base_math.hpp */; }; + 0FF84D797B6CE3D644B630E6 /* tests_base_saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E793E1BDD3947538FC5CE2BC /* tests_base_saturate_cast.hpp */; }; + EE5B202ADA5D643AC3E05A33 /* tests_base_saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1DD48AA189F29E6ED2BFA480 /* tests_base_saturate_round.hpp */; }; + DCEE6CA4482E31BD510EF8D4 /* tests_base_wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B0E58AC17FAEF1B8070AF6E /* tests_base_wrapping_divide.hpp */; }; + C893DB60B4112CFA9D09EA91 /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B7AE97A523C9FA466CEB0ADB /* utility.hpp */; }; + 1C988F0B0816E0A4F10D9E3C /* version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8BAE8EC4F7C8F16540EB01FA /* version.hpp */; }; + 8BC8C5817772FB90604303AC /* wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3933AE14F5A97FD98B52560 /* wrapping_divide.hpp */; }; + C16138A92D9D986C369215FC /* base64.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F0B09491DC185B5F45846F75 /* base64.hpp */; }; + F607C2D9E29BB7814B601136 /* base64url.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A58508BF11F60A38DA1485C0 /* base64url.hpp */; }; + 053796FEF14996579A337344 /* hex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 14649C3680F35D2189EF3E39 /* hex.hpp */; }; + 3334DC8F9FF184C628BC702E /* tests_binary.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8BA7F3577751296760223182 /* tests_binary.hpp */; }; + 502439753C3739CEE52016BB /* libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F168852EBA5493DF4A12A55 /* libc.hpp */; }; + AE01B73F1A674AC6A33FEC9E /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D019BE2295372D21272AFE2 /* mfc.hpp */; }; + 05EF2002712A81C57A1FFE54 /* windows.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B4E39A4BA04B611909B7752F /* windows.hpp */; }; + 26CB79B992E5DC5ADB07EDEE /* crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E7035588A57F74F33A85D6D /* crc.hpp */; }; + BDA9C31829C6B509F29D2277 /* tests_crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC2E9BF998D70229C16D1EA8 /* tests_crc.hpp */; }; + 0CDBF337F86EE9DF61334394 /* exception.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FB92CED56703D14E30224BD7 /* exception.hpp */; }; + A349BCCE0FBABE47D8D838D0 /* hash.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D277709CBEF463DFE77164F3 /* hash.hpp */; }; + 44CEA27030E1A2C9D9CA7FB6 /* jwk.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC9FF0F0682FB2DB712B93F3 /* jwk.hpp */; }; + D01B0A173CD9B24DC5A39EB5 /* tests_crypto.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1FDC6ACC0B86A0DBF456A8F6 /* tests_crypto.hpp */; }; + 0C2970FCF83B7055A1254D42 /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BB351E1027C5DFFA30C1C012 /* mfc.hpp */; }; + 0CA818CFF8514EDEE12256F9 /* nlohmann_json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7B378CD2E7FDE8EE30597751 /* nlohmann_json.hpp */; }; + 0642A890F2EBDD9FDBBCE5BA /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 352D9BC9A1F3F7E5EA4E8648 /* floatingpoint.hpp */; }; + 78A96A1D6452D24C8DE8EDCB /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 271A49A1937FDC271C587E00 /* integer.hpp */; }; + 8DCD11FCF997E356429EE27B /* tests_endian_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC15C013E8AC02C9916179C9 /* tests_endian_floatingpoint.hpp */; }; + 7F682B86EBD1C0E874156F93 /* tests_endian_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6E4E7DA05A24049E43CE1EF1 /* tests_endian_integer.hpp */; }; + 44564418B0C88634F95CBCB8 /* environment.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 53F2C88C3F317308E8B34F3A /* environment.hpp */; }; + A308F4920F9C55411883C5F7 /* exception_text.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 922031457EE0C1E9E7FDA9F4 /* exception_text.hpp */; }; + 4BA56844377BEF4120250A95 /* default_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5A601355C6D255710F678BF5 /* default_floatingpoint.hpp */; }; + 43D1171C2F91A8C098AE90CB /* default_formatter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D2B9D42D3ED6C61E07AE338C /* default_formatter.hpp */; }; + 567685A9424BCD5C6BFA0C59 /* default_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45D34C9FB1E4F4453A368785 /* default_integer.hpp */; }; + A1AE05400D96F0351684F2B1 /* default_string.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D080563FBC144CE725D9A59B /* default_string.hpp */; }; + DB8926BEC7328EEDF0C8A96C /* helpers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AA708BBB16D61E429FAEC01A /* helpers.hpp */; }; + CF1E8B9EBBC7F2CDE45D0E4D /* message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1E1DCE3C8A8261C3135B039C /* message.hpp */; }; + B56C11EA2154FCDF2A42FE5B /* message_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6422BACB50B6AF73B97A0928 /* message_macros.hpp */; }; + 2692E58E92CD45529BC2C2E1 /* simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35CE538121361A4F8AA12E65 /* simple.hpp */; }; + 25E9FB2191B1C9A55A42D2B7 /* simple_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 147C0B9C0051534F2900934B /* simple_floatingpoint.hpp */; }; + 173F9FDF83268AD58C148C51 /* simple_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 866F00997203F640DBC74FF5 /* simple_integer.hpp */; }; + F6AD80FEE2EC2A7A8B6F07AC /* simple_spec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 65EFB5AFD12A1673DA1F9302 /* simple_spec.hpp */; }; + 1D356FE6899E044912E2B2F3 /* tests_format_message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35567BA1212C029F0AD61CF2 /* tests_format_message.hpp */; }; + 6466456B5052DDDAB9C89C2D /* tests_format_simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 530520A1BFCDED24885EF636 /* tests_format_simple.hpp */; }; + 4CEC5245B851E6CB412A88A4 /* json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B51345307A30B43F0C14853 /* json.hpp */; }; + 41DA04FAAD4A0773766981FB /* mutex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B0ADB6049C2AAA47C5A7AA5B /* mutex.hpp */; }; + 334354CC1F189C7F48C7DB7B /* windows_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 02E2A3B26EF34B59F744DE98 /* windows_version.hpp */; }; + 205AB0748C227EF855B3860A /* out_of_memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2FA46B851B79B3384428F334 /* out_of_memory.hpp */; }; + B1CECBD41D3FCE4DE65D48D6 /* parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 201CC7380C99BA7B3516BB8F /* parse.hpp */; }; + 7F4F8FAFEBC1D1CB34560750 /* tests_parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5769367F43A8E0FAEC2ABD2C /* tests_parse.hpp */; }; + 415FB7C32DDD075D16D5C5F4 /* crand.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 902A5FEFFC44C2904567D224 /* crand.hpp */; }; + 88C40885749950389D489034 /* default_engines.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 37FA6719A30B10C02C5DA2FF /* default_engines.hpp */; }; + AD896A5C19C5CA1F22BA47AF /* device.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5C35A7A4489D6D72B1088288 /* device.hpp */; }; + 55B63438C1F194FBCAE6118B /* engine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 04D91076F040D74359ACEB59 /* engine.hpp */; }; + 63AE91F0CFBF39975811CCD6 /* engine_lcg.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D237A503BEB5F59CA7ADB334 /* engine_lcg.hpp */; }; + BBAA1DE727E67DAA30DBFA39 /* random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AAF5EF8D965DB65BFFC8CA71 /* random.hpp */; }; + BD062644297728BDF295A245 /* seed.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC1C8FC498998207C116831B /* seed.hpp */; }; + 5400C6ADC0BD6EE449885A4C /* tests_random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23DEC0E90F88F6F8F858FE13 /* tests_random.hpp */; }; + C911DA6F354D3A333E42B7C2 /* buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F83BDED2E4A3A4A04D0FB9B6 /* buffer.hpp */; }; + 96DE918282CA29F2EB40E944 /* tests_string_buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45162280B1DEEF037A6FF815 /* tests_string_buffer.hpp */; }; + 128D85927EF61AF5073AC99F /* tests_string_utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 218B26640D61AD61F60AC8B4 /* tests_string_utility.hpp */; }; + 8BAA727B7728C314602081AC /* types.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9ABFE19D06DA443F4FFC54D3 /* types.hpp */; }; + 831120C56FBA87F49850A373 /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DB53986E47B92BF5D091CDCD /* utility.hpp */; }; + B3D88DDA9FADD58DC85C158A /* convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8207AAB3EE18525A776AE499 /* convert.hpp */; }; + 3914C69FA5FBB095AEE9B211 /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6807C3C5549BB86DBD5F1222 /* macros.hpp */; }; + 8244DAF1EE594848771622A9 /* tests_string_convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 916B9C9A7D6DE0AA66F0D6A3 /* tests_string_convert.hpp */; }; + B6BF603B227D0972AB47F5D9 /* system_error.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45F80BFB31A2410A1A734925 /* system_error.hpp */; }; + 7D6B98CDE9D02B5472A9CD2C /* test.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC4D6082989F377281BE7482 /* test.hpp */; }; + 63F809934F8CFF3AB85059EF /* test_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F23D20A95EAE222227CD9CAA /* test_macros.hpp */; }; + E23C5F944EA2F21AD77A94F3 /* guid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F16B7083DDBD4773C6DC8483 /* guid.hpp */; }; + FEC34ED86AAB39CE73993B4A /* tests_uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0D88F83FF91BEEE762E0479C /* tests_uuid.hpp */; }; + 4C69A89EB8CE3B2541A7DDFD /* uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1BAEE7B40700BFA4F01EFCB4 /* uuid.hpp */; }; + 5C5785AAC86CF3005129CD61 /* tests_uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2BCE9F1817D0E3280053DA21 /* tests_uuid_namespace.hpp */; }; + A15205F80DE666A616CDD65C /* uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 393DD80225FD68A78E1A51B2 /* uuid_namespace.hpp */; }; 33F43B0D1FB76C31C8047EAD /* libopenmpt-mpg123.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C253023F2E93C65737738D6F /* libopenmpt-mpg123.dylib */; }; 295F95881522C6ACBE6FD728 /* libopenmpt-vorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F88CF99364CCBDAC6DAC84C4 /* libopenmpt-vorbis.dylib */; }; 590C48B3450E8CC32E9182BC /* libopenmpt-ogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 88986B03F4B67FD03D8485E2 /* libopenmpt-ogg.dylib */; }; @@ -598,6 +700,108 @@ 6E6ED48B5AEC242543E4E2BC /* tuningCollection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuningCollection.cpp"; path = "tuningCollection.cpp"; sourceTree = ""; }; 64866C7650D8436639F78076 /* tuningbase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningbase.h"; path = "tuningbase.h"; sourceTree = ""; }; D7109B26C3239B7F6C0D786C /* tuningcollection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningcollection.h"; path = "tuningcollection.h"; sourceTree = ""; }; + CB5F32E137C5C567C09D6740 /* algorithm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "algorithm.hpp"; path = "algorithm.hpp"; sourceTree = ""; }; + 31ABD04C9D3A9237A636734F /* alloc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "alloc.hpp"; path = "alloc.hpp"; sourceTree = ""; }; + CFA8EC5CBB3CE20424013CB9 /* arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "arithmetic_shift.hpp"; path = "arithmetic_shift.hpp"; sourceTree = ""; }; + 405E9187ACED5272B5E9338A /* array.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "array.hpp"; path = "array.hpp"; sourceTree = ""; }; + 224BB17F8E0FB06F5775E039 /* bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "bit.hpp"; path = "bit.hpp"; sourceTree = ""; }; + 87716DE6731AD5159CB0F094 /* check_platform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "check_platform.hpp"; path = "check_platform.hpp"; sourceTree = ""; }; + 74155F7CE031516DA909BEDA /* compiletime_warning.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "compiletime_warning.hpp"; path = "compiletime_warning.hpp"; sourceTree = ""; }; + 6234A41DCEFA003A17568F9C /* constexpr_throw.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "constexpr_throw.hpp"; path = "constexpr_throw.hpp"; sourceTree = ""; }; + 5B1990F3479683367013844A /* detect.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect.hpp"; path = "detect.hpp"; sourceTree = ""; }; + 37739C93A339F9AFEC948712 /* detect_compiler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_compiler.hpp"; path = "detect_compiler.hpp"; sourceTree = ""; }; + 980934EB047A3664CD98B0EC /* detect_libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libc.hpp"; path = "detect_libc.hpp"; sourceTree = ""; }; + 4A0FB859B64A181DBF3F95AC /* detect_libcxx.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libcxx.hpp"; path = "detect_libcxx.hpp"; sourceTree = ""; }; + 4402303AB067C3C039406599 /* detect_os.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_os.hpp"; path = "detect_os.hpp"; sourceTree = ""; }; + DA450125468161E84F76DE77 /* detect_quirks.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_quirks.hpp"; path = "detect_quirks.hpp"; sourceTree = ""; }; + A3CED61B0F0A37DF18FFB36E /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 950801B4012364554A4574E9 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + CEBD9467BA3A88AAE3B788BE /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + D58929FFC1DB00EFAAFA3DFF /* math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "math.hpp"; path = "math.hpp"; sourceTree = ""; }; + 9D0B894289887C85B2057D99 /* memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "memory.hpp"; path = "memory.hpp"; sourceTree = ""; }; + 93EE5781FF53EB07882C8DE0 /* namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "namespace.hpp"; path = "namespace.hpp"; sourceTree = ""; }; + 1B7BDC3F87953FE1D0B74F75 /* numeric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "numeric.hpp"; path = "numeric.hpp"; sourceTree = ""; }; + CBC19C5637DCFFF780FE0F8C /* pointer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "pointer.hpp"; path = "pointer.hpp"; sourceTree = ""; }; + 3348E2A01FC6323A08BEF0D1 /* preprocessor.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "preprocessor.hpp"; path = "preprocessor.hpp"; sourceTree = ""; }; + CFCA30133B0691D644FB0D66 /* saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_cast.hpp"; path = "saturate_cast.hpp"; sourceTree = ""; }; + 0E4DA715FAF50E45238C2AC4 /* saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_round.hpp"; path = "saturate_round.hpp"; sourceTree = ""; }; + E7FF40BDD37C3400FCF93414 /* secure.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "secure.hpp"; path = "secure.hpp"; sourceTree = ""; }; + 3BA460B82738566090FCAF14 /* semantic_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "semantic_version.hpp"; path = "semantic_version.hpp"; sourceTree = ""; }; + 2D78A5C5993E02E2E2999044 /* source_location.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "source_location.hpp"; path = "source_location.hpp"; sourceTree = ""; }; + CFB31F52BB05F741A4243452 /* span.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "span.hpp"; path = "span.hpp"; sourceTree = ""; }; + B5A0EB57210A81BAAA4D2F65 /* tests_base_arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_arithmetic_shift.hpp"; path = "tests_base_arithmetic_shift.hpp"; sourceTree = ""; }; + 8F55448E7BFF799D64D081B8 /* tests_base_bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_bit.hpp"; path = "tests_base_bit.hpp"; sourceTree = ""; }; + DC33C46D481BAF635109B1DF /* tests_base_math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_math.hpp"; path = "tests_base_math.hpp"; sourceTree = ""; }; + E793E1BDD3947538FC5CE2BC /* tests_base_saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_cast.hpp"; path = "tests_base_saturate_cast.hpp"; sourceTree = ""; }; + 1DD48AA189F29E6ED2BFA480 /* tests_base_saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_round.hpp"; path = "tests_base_saturate_round.hpp"; sourceTree = ""; }; + 2B0E58AC17FAEF1B8070AF6E /* tests_base_wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_wrapping_divide.hpp"; path = "tests_base_wrapping_divide.hpp"; sourceTree = ""; }; + B7AE97A523C9FA466CEB0ADB /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 8BAE8EC4F7C8F16540EB01FA /* version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "version.hpp"; path = "version.hpp"; sourceTree = ""; }; + E3933AE14F5A97FD98B52560 /* wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "wrapping_divide.hpp"; path = "wrapping_divide.hpp"; sourceTree = ""; }; + F0B09491DC185B5F45846F75 /* base64.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64.hpp"; path = "base64.hpp"; sourceTree = ""; }; + A58508BF11F60A38DA1485C0 /* base64url.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64url.hpp"; path = "base64url.hpp"; sourceTree = ""; }; + 14649C3680F35D2189EF3E39 /* hex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hex.hpp"; path = "hex.hpp"; sourceTree = ""; }; + 8BA7F3577751296760223182 /* tests_binary.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_binary.hpp"; path = "tests_binary.hpp"; sourceTree = ""; }; + 7F168852EBA5493DF4A12A55 /* libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libc.hpp"; path = "libc.hpp"; sourceTree = ""; }; + 3D019BE2295372D21272AFE2 /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + B4E39A4BA04B611909B7752F /* windows.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows.hpp"; path = "windows.hpp"; sourceTree = ""; }; + 9E7035588A57F74F33A85D6D /* crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crc.hpp"; path = "crc.hpp"; sourceTree = ""; }; + AC2E9BF998D70229C16D1EA8 /* tests_crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crc.hpp"; path = "tests_crc.hpp"; sourceTree = ""; }; + FB92CED56703D14E30224BD7 /* exception.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception.hpp"; path = "exception.hpp"; sourceTree = ""; }; + D277709CBEF463DFE77164F3 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hash.hpp"; path = "hash.hpp"; sourceTree = ""; }; + FC9FF0F0682FB2DB712B93F3 /* jwk.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "jwk.hpp"; path = "jwk.hpp"; sourceTree = ""; }; + 1FDC6ACC0B86A0DBF456A8F6 /* tests_crypto.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crypto.hpp"; path = "tests_crypto.hpp"; sourceTree = ""; }; + BB351E1027C5DFFA30C1C012 /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + 7B378CD2E7FDE8EE30597751 /* nlohmann_json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "nlohmann_json.hpp"; path = "nlohmann_json.hpp"; sourceTree = ""; }; + 352D9BC9A1F3F7E5EA4E8648 /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 271A49A1937FDC271C587E00 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + FC15C013E8AC02C9916179C9 /* tests_endian_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_floatingpoint.hpp"; path = "tests_endian_floatingpoint.hpp"; sourceTree = ""; }; + 6E4E7DA05A24049E43CE1EF1 /* tests_endian_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_integer.hpp"; path = "tests_endian_integer.hpp"; sourceTree = ""; }; + 53F2C88C3F317308E8B34F3A /* environment.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "environment.hpp"; path = "environment.hpp"; sourceTree = ""; }; + 922031457EE0C1E9E7FDA9F4 /* exception_text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception_text.hpp"; path = "exception_text.hpp"; sourceTree = ""; }; + 5A601355C6D255710F678BF5 /* default_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_floatingpoint.hpp"; path = "default_floatingpoint.hpp"; sourceTree = ""; }; + D2B9D42D3ED6C61E07AE338C /* default_formatter.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_formatter.hpp"; path = "default_formatter.hpp"; sourceTree = ""; }; + 45D34C9FB1E4F4453A368785 /* default_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_integer.hpp"; path = "default_integer.hpp"; sourceTree = ""; }; + D080563FBC144CE725D9A59B /* default_string.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_string.hpp"; path = "default_string.hpp"; sourceTree = ""; }; + AA708BBB16D61E429FAEC01A /* helpers.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "helpers.hpp"; path = "helpers.hpp"; sourceTree = ""; }; + 1E1DCE3C8A8261C3135B039C /* message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message.hpp"; path = "message.hpp"; sourceTree = ""; }; + 6422BACB50B6AF73B97A0928 /* message_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message_macros.hpp"; path = "message_macros.hpp"; sourceTree = ""; }; + 35CE538121361A4F8AA12E65 /* simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple.hpp"; path = "simple.hpp"; sourceTree = ""; }; + 147C0B9C0051534F2900934B /* simple_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_floatingpoint.hpp"; path = "simple_floatingpoint.hpp"; sourceTree = ""; }; + 866F00997203F640DBC74FF5 /* simple_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_integer.hpp"; path = "simple_integer.hpp"; sourceTree = ""; }; + 65EFB5AFD12A1673DA1F9302 /* simple_spec.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_spec.hpp"; path = "simple_spec.hpp"; sourceTree = ""; }; + 35567BA1212C029F0AD61CF2 /* tests_format_message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_message.hpp"; path = "tests_format_message.hpp"; sourceTree = ""; }; + 530520A1BFCDED24885EF636 /* tests_format_simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_simple.hpp"; path = "tests_format_simple.hpp"; sourceTree = ""; }; + 1B51345307A30B43F0C14853 /* json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "json.hpp"; path = "json.hpp"; sourceTree = ""; }; + B0ADB6049C2AAA47C5A7AA5B /* mutex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mutex.hpp"; path = "mutex.hpp"; sourceTree = ""; }; + 02E2A3B26EF34B59F744DE98 /* windows_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows_version.hpp"; path = "windows_version.hpp"; sourceTree = ""; }; + 2FA46B851B79B3384428F334 /* out_of_memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "out_of_memory.hpp"; path = "out_of_memory.hpp"; sourceTree = ""; }; + 201CC7380C99BA7B3516BB8F /* parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "parse.hpp"; path = "parse.hpp"; sourceTree = ""; }; + 5769367F43A8E0FAEC2ABD2C /* tests_parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_parse.hpp"; path = "tests_parse.hpp"; sourceTree = ""; }; + 902A5FEFFC44C2904567D224 /* crand.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crand.hpp"; path = "crand.hpp"; sourceTree = ""; }; + 37FA6719A30B10C02C5DA2FF /* default_engines.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_engines.hpp"; path = "default_engines.hpp"; sourceTree = ""; }; + 5C35A7A4489D6D72B1088288 /* device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "device.hpp"; path = "device.hpp"; sourceTree = ""; }; + 04D91076F040D74359ACEB59 /* engine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine.hpp"; path = "engine.hpp"; sourceTree = ""; }; + D237A503BEB5F59CA7ADB334 /* engine_lcg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine_lcg.hpp"; path = "engine_lcg.hpp"; sourceTree = ""; }; + AAF5EF8D965DB65BFFC8CA71 /* random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "random.hpp"; path = "random.hpp"; sourceTree = ""; }; + AC1C8FC498998207C116831B /* seed.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "seed.hpp"; path = "seed.hpp"; sourceTree = ""; }; + 23DEC0E90F88F6F8F858FE13 /* tests_random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_random.hpp"; path = "tests_random.hpp"; sourceTree = ""; }; + F83BDED2E4A3A4A04D0FB9B6 /* buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "buffer.hpp"; path = "buffer.hpp"; sourceTree = ""; }; + 45162280B1DEEF037A6FF815 /* tests_string_buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_buffer.hpp"; path = "tests_string_buffer.hpp"; sourceTree = ""; }; + 218B26640D61AD61F60AC8B4 /* tests_string_utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_utility.hpp"; path = "tests_string_utility.hpp"; sourceTree = ""; }; + 9ABFE19D06DA443F4FFC54D3 /* types.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "types.hpp"; path = "types.hpp"; sourceTree = ""; }; + DB53986E47B92BF5D091CDCD /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 8207AAB3EE18525A776AE499 /* convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "convert.hpp"; path = "convert.hpp"; sourceTree = ""; }; + 6807C3C5549BB86DBD5F1222 /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + 916B9C9A7D6DE0AA66F0D6A3 /* tests_string_convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_convert.hpp"; path = "tests_string_convert.hpp"; sourceTree = ""; }; + 45F80BFB31A2410A1A734925 /* system_error.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "system_error.hpp"; path = "system_error.hpp"; sourceTree = ""; }; + AC4D6082989F377281BE7482 /* test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test.hpp"; path = "test.hpp"; sourceTree = ""; }; + F23D20A95EAE222227CD9CAA /* test_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test_macros.hpp"; path = "test_macros.hpp"; sourceTree = ""; }; + F16B7083DDBD4773C6DC8483 /* guid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "guid.hpp"; path = "guid.hpp"; sourceTree = ""; }; + 0D88F83FF91BEEE762E0479C /* tests_uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid.hpp"; path = "tests_uuid.hpp"; sourceTree = ""; }; + 1BAEE7B40700BFA4F01EFCB4 /* uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "uuid.hpp"; path = "uuid.hpp"; sourceTree = ""; }; + 2BCE9F1817D0E3280053DA21 /* tests_uuid_namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid_namespace.hpp"; path = "tests_uuid_namespace.hpp"; sourceTree = ""; }; + 393DD80225FD68A78E1A51B2 /* uuid_namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "uuid_namespace.hpp"; path = "uuid_namespace.hpp"; sourceTree = ""; }; C1F3343CADAE24E856669D32 /* liblibopenmpt.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = "liblibopenmpt.dylib"; path = "liblibopenmpt.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; 8CACB699F8BD5E40810FF17F /* mpg123.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "mpg123.xcodeproj"; path = "ext/mpg123.xcodeproj"; sourceTree = SOURCE_ROOT; }; C22F9E152E4146BCB792D8FB /* vorbis.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "vorbis.xcodeproj"; path = "ext/vorbis.xcodeproj"; sourceTree = SOURCE_ROOT; }; @@ -605,7 +809,7 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 824FCF41EE19A19C3720A0C1 /* Frameworks */ = { + C84C058B3417D7E57D1DD60A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -626,8 +830,9 @@ 4FEAB79B3BFA636CA4B3C88A /* soundbase */, 5A30E327C6F216B20FA3A53E /* sounddsp */, E961CB335524FFBD9ED48D4A /* soundlib */, - 9E6A03080A2D379253DDC51E /* Products */, - B533D44521F607D06AA6965C /* Projects */, + 526061A83EEFEA71E70DFF6C /* src */, + E40300BC50C633469976C2D2 /* Products */, + FBCCD0F9678F0484B03F9310 /* Projects */, ); name = "libopenmpt"; path = "."; @@ -961,15 +1166,440 @@ path = "dmo"; sourceTree = ""; }; - 9E6A03080A2D379253DDC51E /* Products */ = { + 526061A83EEFEA71E70DFF6C /* src */ = { isa = PBXGroup; children = ( + F3AC3E46DFD18DC6081D7356 /* mpt */, + ); + name = "src"; + path = "../../src"; + sourceTree = ""; + }; + F3AC3E46DFD18DC6081D7356 /* mpt */ = { + isa = PBXGroup; + children = ( + 1E2A22788A4209A253EF983B /* base */, + C53BE9A9311FF8E93A222626 /* binary */, + 9F15441C8B3B0E837481934E /* check */, + 008632CAEC40227695F89AC0 /* crc */, + 8667A838F24AB778FB4DE5B4 /* crypto */, + FF2FC9176B13D85774160694 /* detect */, + 3A25111FA608205FAF0B4E9B /* endian */, + 21F767D10DDE29C9B62E90E6 /* environment */, + 794A3DD3E5D9FEBDEED5DFD5 /* exception_text */, + F257BC185E3BCB58673EF994 /* format */, + 5B798109C7916833903EF8CC /* json */, + 379864F923BE2E600C04B42B /* mutex */, + D5CCC18441B0D0C44AB3FE00 /* osinfo */, + 05A98A26F1FA6116DA199F26 /* out_of_memory */, + 7F88355A6BAEFFC054F4848C /* parse */, + 02880C336E6B1B73776E49AF /* random */, + E15A2FCE4D3E3E0E56416C4A /* string */, + 3B0EF1FBA79DB2E6B09993FE /* string_convert */, + 1A0A3C3886CE3A284F346BF2 /* system_error */, + 06F9146F7211FC983BBE8B32 /* test */, + 626839ACCE8020D6972DB06F /* uuid */, + 2DE7FF1A9976C105A272A21D /* uuid_namespace */, + ); + name = "mpt"; + path = "mpt"; + sourceTree = ""; + }; + 1E2A22788A4209A253EF983B /* base */ = { + isa = PBXGroup; + children = ( + CB5F32E137C5C567C09D6740 /* algorithm.hpp */, + 31ABD04C9D3A9237A636734F /* alloc.hpp */, + CFA8EC5CBB3CE20424013CB9 /* arithmetic_shift.hpp */, + 405E9187ACED5272B5E9338A /* array.hpp */, + 224BB17F8E0FB06F5775E039 /* bit.hpp */, + 87716DE6731AD5159CB0F094 /* check_platform.hpp */, + 74155F7CE031516DA909BEDA /* compiletime_warning.hpp */, + 6234A41DCEFA003A17568F9C /* constexpr_throw.hpp */, + 5B1990F3479683367013844A /* detect.hpp */, + 37739C93A339F9AFEC948712 /* detect_compiler.hpp */, + 980934EB047A3664CD98B0EC /* detect_libc.hpp */, + 4A0FB859B64A181DBF3F95AC /* detect_libcxx.hpp */, + 4402303AB067C3C039406599 /* detect_os.hpp */, + DA450125468161E84F76DE77 /* detect_quirks.hpp */, + A3CED61B0F0A37DF18FFB36E /* floatingpoint.hpp */, + 950801B4012364554A4574E9 /* integer.hpp */, + CEBD9467BA3A88AAE3B788BE /* macros.hpp */, + D58929FFC1DB00EFAAFA3DFF /* math.hpp */, + 9D0B894289887C85B2057D99 /* memory.hpp */, + 93EE5781FF53EB07882C8DE0 /* namespace.hpp */, + 1B7BDC3F87953FE1D0B74F75 /* numeric.hpp */, + CBC19C5637DCFFF780FE0F8C /* pointer.hpp */, + 3348E2A01FC6323A08BEF0D1 /* preprocessor.hpp */, + CFCA30133B0691D644FB0D66 /* saturate_cast.hpp */, + 0E4DA715FAF50E45238C2AC4 /* saturate_round.hpp */, + E7FF40BDD37C3400FCF93414 /* secure.hpp */, + 3BA460B82738566090FCAF14 /* semantic_version.hpp */, + 2D78A5C5993E02E2E2999044 /* source_location.hpp */, + CFB31F52BB05F741A4243452 /* span.hpp */, + FC350F3D68EF79E7F14E94C1 /* tests */, + B7AE97A523C9FA466CEB0ADB /* utility.hpp */, + 8BAE8EC4F7C8F16540EB01FA /* version.hpp */, + E3933AE14F5A97FD98B52560 /* wrapping_divide.hpp */, + ); + name = "base"; + path = "base"; + sourceTree = ""; + }; + FC350F3D68EF79E7F14E94C1 /* tests */ = { + isa = PBXGroup; + children = ( + B5A0EB57210A81BAAA4D2F65 /* tests_base_arithmetic_shift.hpp */, + 8F55448E7BFF799D64D081B8 /* tests_base_bit.hpp */, + DC33C46D481BAF635109B1DF /* tests_base_math.hpp */, + E793E1BDD3947538FC5CE2BC /* tests_base_saturate_cast.hpp */, + 1DD48AA189F29E6ED2BFA480 /* tests_base_saturate_round.hpp */, + 2B0E58AC17FAEF1B8070AF6E /* tests_base_wrapping_divide.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + C53BE9A9311FF8E93A222626 /* binary */ = { + isa = PBXGroup; + children = ( + F0B09491DC185B5F45846F75 /* base64.hpp */, + A58508BF11F60A38DA1485C0 /* base64url.hpp */, + 14649C3680F35D2189EF3E39 /* hex.hpp */, + CE3758AA3AFC569A03628764 /* tests */, + ); + name = "binary"; + path = "binary"; + sourceTree = ""; + }; + CE3758AA3AFC569A03628764 /* tests */ = { + isa = PBXGroup; + children = ( + 8BA7F3577751296760223182 /* tests_binary.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 9F15441C8B3B0E837481934E /* check */ = { + isa = PBXGroup; + children = ( + 7F168852EBA5493DF4A12A55 /* libc.hpp */, + 3D019BE2295372D21272AFE2 /* mfc.hpp */, + B4E39A4BA04B611909B7752F /* windows.hpp */, + ); + name = "check"; + path = "check"; + sourceTree = ""; + }; + 008632CAEC40227695F89AC0 /* crc */ = { + isa = PBXGroup; + children = ( + 9E7035588A57F74F33A85D6D /* crc.hpp */, + 3C338CC3286F8F2D9181A724 /* tests */, + ); + name = "crc"; + path = "crc"; + sourceTree = ""; + }; + 3C338CC3286F8F2D9181A724 /* tests */ = { + isa = PBXGroup; + children = ( + AC2E9BF998D70229C16D1EA8 /* tests_crc.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 8667A838F24AB778FB4DE5B4 /* crypto */ = { + isa = PBXGroup; + children = ( + FB92CED56703D14E30224BD7 /* exception.hpp */, + D277709CBEF463DFE77164F3 /* hash.hpp */, + FC9FF0F0682FB2DB712B93F3 /* jwk.hpp */, + 861E2DB4F2E22BA4BB485C6E /* tests */, + ); + name = "crypto"; + path = "crypto"; + sourceTree = ""; + }; + 861E2DB4F2E22BA4BB485C6E /* tests */ = { + isa = PBXGroup; + children = ( + 1FDC6ACC0B86A0DBF456A8F6 /* tests_crypto.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + FF2FC9176B13D85774160694 /* detect */ = { + isa = PBXGroup; + children = ( + BB351E1027C5DFFA30C1C012 /* mfc.hpp */, + 7B378CD2E7FDE8EE30597751 /* nlohmann_json.hpp */, + ); + name = "detect"; + path = "detect"; + sourceTree = ""; + }; + 3A25111FA608205FAF0B4E9B /* endian */ = { + isa = PBXGroup; + children = ( + 352D9BC9A1F3F7E5EA4E8648 /* floatingpoint.hpp */, + 271A49A1937FDC271C587E00 /* integer.hpp */, + 78658F09E4298EF9AD8FBEC3 /* tests */, + ); + name = "endian"; + path = "endian"; + sourceTree = ""; + }; + 78658F09E4298EF9AD8FBEC3 /* tests */ = { + isa = PBXGroup; + children = ( + FC15C013E8AC02C9916179C9 /* tests_endian_floatingpoint.hpp */, + 6E4E7DA05A24049E43CE1EF1 /* tests_endian_integer.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 21F767D10DDE29C9B62E90E6 /* environment */ = { + isa = PBXGroup; + children = ( + 53F2C88C3F317308E8B34F3A /* environment.hpp */, + ); + name = "environment"; + path = "environment"; + sourceTree = ""; + }; + 794A3DD3E5D9FEBDEED5DFD5 /* exception_text */ = { + isa = PBXGroup; + children = ( + 922031457EE0C1E9E7FDA9F4 /* exception_text.hpp */, + ); + name = "exception_text"; + path = "exception_text"; + sourceTree = ""; + }; + F257BC185E3BCB58673EF994 /* format */ = { + isa = PBXGroup; + children = ( + 5A601355C6D255710F678BF5 /* default_floatingpoint.hpp */, + D2B9D42D3ED6C61E07AE338C /* default_formatter.hpp */, + 45D34C9FB1E4F4453A368785 /* default_integer.hpp */, + D080563FBC144CE725D9A59B /* default_string.hpp */, + AA708BBB16D61E429FAEC01A /* helpers.hpp */, + 1E1DCE3C8A8261C3135B039C /* message.hpp */, + 6422BACB50B6AF73B97A0928 /* message_macros.hpp */, + 35CE538121361A4F8AA12E65 /* simple.hpp */, + 147C0B9C0051534F2900934B /* simple_floatingpoint.hpp */, + 866F00997203F640DBC74FF5 /* simple_integer.hpp */, + 65EFB5AFD12A1673DA1F9302 /* simple_spec.hpp */, + 5041C724BC05C614856BF6DE /* tests */, + ); + name = "format"; + path = "format"; + sourceTree = ""; + }; + 5041C724BC05C614856BF6DE /* tests */ = { + isa = PBXGroup; + children = ( + 35567BA1212C029F0AD61CF2 /* tests_format_message.hpp */, + 530520A1BFCDED24885EF636 /* tests_format_simple.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 5B798109C7916833903EF8CC /* json */ = { + isa = PBXGroup; + children = ( + 1B51345307A30B43F0C14853 /* json.hpp */, + ); + name = "json"; + path = "json"; + sourceTree = ""; + }; + 379864F923BE2E600C04B42B /* mutex */ = { + isa = PBXGroup; + children = ( + B0ADB6049C2AAA47C5A7AA5B /* mutex.hpp */, + ); + name = "mutex"; + path = "mutex"; + sourceTree = ""; + }; + D5CCC18441B0D0C44AB3FE00 /* osinfo */ = { + isa = PBXGroup; + children = ( + 02E2A3B26EF34B59F744DE98 /* windows_version.hpp */, + ); + name = "osinfo"; + path = "osinfo"; + sourceTree = ""; + }; + 05A98A26F1FA6116DA199F26 /* out_of_memory */ = { + isa = PBXGroup; + children = ( + 2FA46B851B79B3384428F334 /* out_of_memory.hpp */, + ); + name = "out_of_memory"; + path = "out_of_memory"; + sourceTree = ""; + }; + 7F88355A6BAEFFC054F4848C /* parse */ = { + isa = PBXGroup; + children = ( + 201CC7380C99BA7B3516BB8F /* parse.hpp */, + 2444BC4B102B7E43B97BE460 /* tests */, + ); + name = "parse"; + path = "parse"; + sourceTree = ""; + }; + 2444BC4B102B7E43B97BE460 /* tests */ = { + isa = PBXGroup; + children = ( + 5769367F43A8E0FAEC2ABD2C /* tests_parse.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 02880C336E6B1B73776E49AF /* random */ = { + isa = PBXGroup; + children = ( + 902A5FEFFC44C2904567D224 /* crand.hpp */, + 37FA6719A30B10C02C5DA2FF /* default_engines.hpp */, + 5C35A7A4489D6D72B1088288 /* device.hpp */, + 04D91076F040D74359ACEB59 /* engine.hpp */, + D237A503BEB5F59CA7ADB334 /* engine_lcg.hpp */, + AAF5EF8D965DB65BFFC8CA71 /* random.hpp */, + AC1C8FC498998207C116831B /* seed.hpp */, + 0A63AAF17627A9E13F8DD9AB /* tests */, + ); + name = "random"; + path = "random"; + sourceTree = ""; + }; + 0A63AAF17627A9E13F8DD9AB /* tests */ = { + isa = PBXGroup; + children = ( + 23DEC0E90F88F6F8F858FE13 /* tests_random.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + E15A2FCE4D3E3E0E56416C4A /* string */ = { + isa = PBXGroup; + children = ( + F83BDED2E4A3A4A04D0FB9B6 /* buffer.hpp */, + 9D0E2C7F09D32A6FD2385B39 /* tests */, + 9ABFE19D06DA443F4FFC54D3 /* types.hpp */, + DB53986E47B92BF5D091CDCD /* utility.hpp */, + ); + name = "string"; + path = "string"; + sourceTree = ""; + }; + 9D0E2C7F09D32A6FD2385B39 /* tests */ = { + isa = PBXGroup; + children = ( + 45162280B1DEEF037A6FF815 /* tests_string_buffer.hpp */, + 218B26640D61AD61F60AC8B4 /* tests_string_utility.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 3B0EF1FBA79DB2E6B09993FE /* string_convert */ = { + isa = PBXGroup; + children = ( + 8207AAB3EE18525A776AE499 /* convert.hpp */, + 6807C3C5549BB86DBD5F1222 /* macros.hpp */, + 023245396EA247B237C1C13A /* tests */, + ); + name = "string_convert"; + path = "string_convert"; + sourceTree = ""; + }; + 023245396EA247B237C1C13A /* tests */ = { + isa = PBXGroup; + children = ( + 916B9C9A7D6DE0AA66F0D6A3 /* tests_string_convert.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 1A0A3C3886CE3A284F346BF2 /* system_error */ = { + isa = PBXGroup; + children = ( + 45F80BFB31A2410A1A734925 /* system_error.hpp */, + ); + name = "system_error"; + path = "system_error"; + sourceTree = ""; + }; + 06F9146F7211FC983BBE8B32 /* test */ = { + isa = PBXGroup; + children = ( + AC4D6082989F377281BE7482 /* test.hpp */, + F23D20A95EAE222227CD9CAA /* test_macros.hpp */, + ); + name = "test"; + path = "test"; + sourceTree = ""; + }; + 626839ACCE8020D6972DB06F /* uuid */ = { + isa = PBXGroup; + children = ( + F16B7083DDBD4773C6DC8483 /* guid.hpp */, + 5EFAAD5DCAB31808531333E2 /* tests */, + 1BAEE7B40700BFA4F01EFCB4 /* uuid.hpp */, + ); + name = "uuid"; + path = "uuid"; + sourceTree = ""; + }; + 5EFAAD5DCAB31808531333E2 /* tests */ = { + isa = PBXGroup; + children = ( + 0D88F83FF91BEEE762E0479C /* tests_uuid.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 2DE7FF1A9976C105A272A21D /* uuid_namespace */ = { + isa = PBXGroup; + children = ( + F058283D5CC92AB625E8A43E /* tests */, + 393DD80225FD68A78E1A51B2 /* uuid_namespace.hpp */, + ); + name = "uuid_namespace"; + path = "uuid_namespace"; + sourceTree = ""; + }; + F058283D5CC92AB625E8A43E /* tests */ = { + isa = PBXGroup; + children = ( + 2BCE9F1817D0E3280053DA21 /* tests_uuid_namespace.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + E40300BC50C633469976C2D2 /* Products */ = { + isa = PBXGroup; + children = ( C1F3343CADAE24E856669D32 /* liblibopenmpt.dylib */, ); name = "Products"; sourceTree = ""; }; - B533D44521F607D06AA6965C /* Projects */ = { + FBCCD0F9678F0484B03F9310 /* Projects */ = { isa = PBXGroup; children = ( 8CACB699F8BD5E40810FF17F /* mpg123.xcodeproj */, @@ -1009,11 +1639,11 @@ /* Begin PBXNativeTarget section */ 87EFAFF2F3FCDDD87CE3D9C3 /* libopenmpt */ = { isa = PBXNativeTarget; - buildConfigurationList = 3E76E37EAA40B5D9F346B4FE /* Build configuration list for PBXNativeTarget "libopenmpt" */; + buildConfigurationList = 847319C8F03DEB223944EA47 /* Build configuration list for PBXNativeTarget "libopenmpt" */; buildPhases = ( - 60F9DCBFCCC3AE1A15CAAD3F /* Resources */, - 9842D600040DA85B4D13A780 /* Sources */, - 824FCF41EE19A19C3720A0C1 /* Frameworks */, + A6F6120912C1E4635BC7E388 /* Resources */, + DE3F0C4A4A0ADEA49310DDC9 /* Sources */, + C84C058B3417D7E57D1DD60A /* Frameworks */, ); buildRules = ( ); @@ -1083,7 +1713,7 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 60F9DCBFCCC3AE1A15CAAD3F /* Resources */ = { + A6F6120912C1E4635BC7E388 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1093,7 +1723,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 9842D600040DA85B4D13A780 /* Sources */ = { + DE3F0C4A4A0ADEA49310DDC9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1310,6 +1940,17 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + EXCLUDED_SOURCE_FILE_NAMES = ( + "*/src/mpt/crypto/exception.hpp", + "*/src/mpt/crypto/hash.hpp", + "*/src/mpt/crypto/jwk.hpp", + "*/src/mpt/crypto/tests/tests_crypto.hpp", + "*/src/mpt/json/json.hpp", + "*/src/mpt/test/test.hpp", + "*/src/mpt/test/test_macros.hpp", + "*/src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp", + "*/src/mpt/uuid_namespace/uuid_namespace.hpp", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -1334,6 +1975,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1371,6 +2013,17 @@ CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + EXCLUDED_SOURCE_FILE_NAMES = ( + "*/src/mpt/crypto/exception.hpp", + "*/src/mpt/crypto/hash.hpp", + "*/src/mpt/crypto/jwk.hpp", + "*/src/mpt/crypto/tests/tests_crypto.hpp", + "*/src/mpt/json/json.hpp", + "*/src/mpt/test/test.hpp", + "*/src/mpt/test/test_macros.hpp", + "*/src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp", + "*/src/mpt/uuid_namespace/uuid_namespace.hpp", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 3; @@ -1393,6 +2046,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1417,7 +2071,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 3E76E37EAA40B5D9F346B4FE /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { + 847319C8F03DEB223944EA47 /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { isa = XCConfigurationList; buildConfigurations = ( 09B8609D754722887E4303A0 /* Debug */, Index: common/BuildSettings.h =================================================================== --- common/BuildSettings.h (revision 14776) +++ common/BuildSettings.h (working copy) @@ -40,8 +40,10 @@ #error "either MODPLUG_TRACKER or LIBOPENMPT_BUILD has to be defined" #elif defined(MODPLUG_TRACKER) // nothing +#define MPT_INLINE_NS mptx #elif defined(LIBOPENMPT_BUILD) // nothing +#define MPT_INLINE_NS mpt_libopenmpt #else #error "either MODPLUG_TRACKER or LIBOPENMPT_BUILD has to be defined" #endif // MODPLUG_TRACKER || LIBOPENMPT_BUILD @@ -334,30 +336,15 @@ #elif MPT_OS_DJGPP - #ifndef MPT_LOCALE_ASSUME_CHARSET - #define MPT_LOCALE_ASSUME_CHARSET DJGPP_GetLocaleCharset() - #endif - #endif -#if MPT_COMPILER_MSVC && !defined(MPT_USTRING_MODE_UTF8_FORCE) +#if (MPT_COMPILER_MSVC && !defined(MPT_USTRING_MODE_UTF8_FORCE)) || defined(MODPLUG_TRACKER) // Use wide strings for MSVC because this is the native encoding on // microsoft platforms. - #define MPT_USTRING_MODE_WIDE 1 - #define MPT_USTRING_MODE_UTF8 0 -#else // !MPT_COMPILER_MSVC - - #define MPT_USTRING_MODE_WIDE 0 - #define MPT_USTRING_MODE_UTF8 1 - -#endif // MPT_COMPILER_MSVC - -#if defined(MODPLUG_TRACKER) || MPT_USTRING_MODE_WIDE - // mpt::ToWString, mpt::wfmt, ConvertStrTo // Required by the tracker to ease interfacing with WinAPI. // Required by MPT_USTRING_MODE_WIDE to ease type tunneling in mpt::format. @@ -369,7 +356,7 @@ #endif -#if MPT_OS_WINDOWS || MPT_USTRING_MODE_WIDE || MPT_WSTRING_FORMAT +#if (MPT_COMPILER_MSVC && !defined(MPT_USTRING_MODE_UTF8_FORCE)) || MPT_OS_WINDOWS || MPT_WSTRING_FORMAT // mpt::ToWide // Required on Windows by mpt::PathString. @@ -550,6 +537,14 @@ #define OPENMPT_NAMESPACE_END } #endif +namespace mpt { +} // namespace mpt +OPENMPT_NAMESPACE_BEGIN +namespace mpt { +using namespace ::mpt; +} // namespace mpt +OPENMPT_NAMESPACE_END + #endif @@ -617,6 +612,7 @@ #endif #define __STDC_CONSTANT_MACROS +#define __STDC_FORMAT_MACROS #define __STDC_LIMIT_MACROS #define _USE_MATH_DEFINES @@ -683,6 +679,12 @@ // third-party library configuration +#if MPT_OS_WINDOWS +#ifndef UNICODE +#define MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_UNICODE +#endif // !UNICODE +#endif // MPT_OS_WINDOWS + #ifdef MPT_WITH_FLAC #ifdef MPT_BUILD_MSVC_STATIC #define FLAC__NO_DLL @@ -717,3 +719,22 @@ #endif #endif + + +#ifdef __cplusplus + +#include "mpt/base/namespace.hpp" + +OPENMPT_NAMESPACE_BEGIN + +namespace mpt { + +#ifndef MPT_NO_NAMESPACE +using namespace ::mpt; +#endif + +} // namespace mpt + +OPENMPT_NAMESPACE_END + +#endif Index: common/CompilerDetect.h =================================================================== --- common/CompilerDetect.h (revision 14776) +++ common/CompilerDetect.h (working copy) @@ -7,367 +7,8 @@ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ - #pragma once - - -#define MPT_COMPILER_MAKE_VERSION2(version,sp) ((version) * 100 + (sp)) -#define MPT_COMPILER_MAKE_VERSION3(major,minor,patch) ((major) * 10000 + (minor) * 100 + (patch)) -#define MPT_COMPILER_MAKE_VERSION3_BUILD(major,minor,build) ((major) * 10000000 + (minor) * 100000 + (patch)) - - - -#if defined(MPT_COMPILER_GENERIC) - -#undef MPT_COMPILER_GENERIC -#define MPT_COMPILER_GENERIC 1 - -#elif defined(__clang__) && defined(_MSC_VER) && defined(__c2__) - -#error "Clang/C2 is not supported. Please use Clang/LLVM for Windows instead." - -#elif defined(__clang__) - -#define MPT_COMPILER_CLANG 1 -#define MPT_COMPILER_CLANG_VERSION MPT_COMPILER_MAKE_VERSION3(__clang_major__,__clang_minor__,__clang_patchlevel__) -#define MPT_CLANG_AT_LEAST(major,minor,patch) (MPT_COMPILER_CLANG_VERSION >= MPT_COMPILER_MAKE_VERSION3((major),(minor),(patch))) -#define MPT_CLANG_BEFORE(major,minor,patch) (MPT_COMPILER_CLANG_VERSION < MPT_COMPILER_MAKE_VERSION3((major),(minor),(patch))) - -#if MPT_CLANG_BEFORE(7,0,0) -#error "clang version 7 required" -#endif - -#if defined(__clang_analyzer__) -#ifndef MPT_BUILD_ANALYZED -#define MPT_BUILD_ANALYZED -#endif -#endif - -#elif defined(__GNUC__) - -#define MPT_COMPILER_GCC 1 -#define MPT_COMPILER_GCC_VERSION MPT_COMPILER_MAKE_VERSION3(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__) -#define MPT_GCC_AT_LEAST(major,minor,patch) (MPT_COMPILER_GCC_VERSION >= MPT_COMPILER_MAKE_VERSION3((major),(minor),(patch))) -#define MPT_GCC_BEFORE(major,minor,patch) (MPT_COMPILER_GCC_VERSION < MPT_COMPILER_MAKE_VERSION3((major),(minor),(patch))) - -#if MPT_GCC_BEFORE(8,1,0) -#error "GCC version 8.1 required" -#endif - -#elif defined(_MSC_VER) - -#define MPT_COMPILER_MSVC 1 -#if (_MSC_VER >= 1926) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,6) -#elif (_MSC_VER >= 1925) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,5) -#elif (_MSC_VER >= 1924) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,4) -#elif (_MSC_VER >= 1923) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,3) -#elif (_MSC_VER >= 1922) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,2) -#elif (_MSC_VER >= 1921) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,1) -#elif (_MSC_VER >= 1920) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019,0) -#elif (_MSC_VER >= 1916) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,9) -#elif (_MSC_VER >= 1915) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,8) -#elif (_MSC_VER >= 1914) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,7) -#elif (_MSC_VER >= 1913) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,6) -#elif (_MSC_VER >= 1912) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,5) -#elif (_MSC_VER >= 1911) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,3) -#elif (_MSC_VER >= 1910) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017,0) -#elif (_MSC_VER >= 1900) && defined(_MSVC_LANG) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015,3) -#elif (_MSC_VER >= 1900) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015,0) -#elif (_MSC_VER >= 1800) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2013,0) -#elif (_MSC_VER >= 1700) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2012,0) -#elif (_MSC_VER >= 1600) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2010,0) -#elif (_MSC_VER >= 1500) -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2008,0) -#else -#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2005,0) -#endif -#define MPT_MSVC_AT_LEAST(version,sp) (MPT_COMPILER_MSVC_VERSION >= MPT_COMPILER_MAKE_VERSION2((version),(sp))) -#define MPT_MSVC_BEFORE(version,sp) (MPT_COMPILER_MSVC_VERSION < MPT_COMPILER_MAKE_VERSION2((version),(sp))) - -#if MPT_MSVC_BEFORE(2017,9) -#error "MSVC version 2017 15.9 required" -#endif - -#if defined(_PREFAST_) -#ifndef MPT_BUILD_ANALYZED -#define MPT_BUILD_ANALYZED -#endif -#endif - -#else - -#define MPT_COMPILER_GENERIC 1 - -#endif - - - -#ifndef MPT_COMPILER_GENERIC -#define MPT_COMPILER_GENERIC 0 -#endif -#ifndef MPT_COMPILER_CLANG -#define MPT_COMPILER_CLANG 0 -#define MPT_CLANG_AT_LEAST(major,minor,patch) 0 -#define MPT_CLANG_BEFORE(major,minor,patch) 0 -#endif -#ifndef MPT_COMPILER_GCC -#define MPT_COMPILER_GCC 0 -#define MPT_GCC_AT_LEAST(major,minor,patch) 0 -#define MPT_GCC_BEFORE(major,minor,patch) 0 -#endif -#ifndef MPT_COMPILER_MSVC -#define MPT_COMPILER_MSVC 0 -#define MPT_MSVC_AT_LEAST(version,sp) 0 -#define MPT_MSVC_BEFORE(version,sp) 0 -#endif - - - -#if MPT_COMPILER_GENERIC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG - -#if (__cplusplus >= 201703) -#define MPT_CXX 17 -#else -#define MPT_CXX 17 -#endif - -#elif MPT_COMPILER_MSVC - -#if (_MSVC_LANG >= 201703) -#define MPT_CXX 17 -#else -#define MPT_CXX 17 -#endif - -#else - -#define MPT_CXX 17 - -#endif - -// MPT_CXX is stricter than just using __cplusplus directly. -// We will only claim a language version as supported IFF all core language and -// library fatures that we need are actually supported AND working correctly -// (to our needs). - -#define MPT_CXX_AT_LEAST(version) (MPT_CXX >= (version)) -#define MPT_CXX_BEFORE(version) (MPT_CXX < (version)) - - - -// This should really be based on __STDCPP_THREADS__, but that is not defined by -// GCC or clang. Stupid. -// Just assume multithreaded and disable for platforms we know are -// singlethreaded later on. -#define MPT_PLATFORM_MULTITHREADED 1 - - - -// specific C++ features - - - -#if MPT_COMPILER_MSVC -// Compiler has multiplication/division semantics when shifting signed integers. -#define MPT_COMPILER_SHIFT_SIGNED 1 -#endif - -#ifndef MPT_COMPILER_SHIFT_SIGNED -#define MPT_COMPILER_SHIFT_SIGNED 0 -#endif - - - -// The order of the checks matters! -#if defined(__DJGPP__) - #define MPT_OS_DJGPP 1 -#elif defined(__EMSCRIPTEN__) - #define MPT_OS_EMSCRIPTEN 1 - #if defined(__EMSCRIPTEN_major__) && defined(__EMSCRIPTEN_minor__) - #if (__EMSCRIPTEN_major__ > 1) - // ok - #elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ > 39) - // ok - #elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ == 39) && (__EMSCRIPTEN_tiny__ >= 7) - // ok - #else - #error "Emscripten >= 1.39.7 is required." - #endif - #endif -#elif defined(_WIN32) - #define MPT_OS_WINDOWS 1 - #if defined(WINAPI_FAMILY) - #include - #if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) - #define MPT_OS_WINDOWS_WINRT 0 - #else - #define MPT_OS_WINDOWS_WINRT 1 - #endif - #else // !WINAPI_FAMILY - #define MPT_OS_WINDOWS_WINRT 0 - #endif // WINAPI_FAMILY -#elif defined(__APPLE__) - #define MPT_OS_MACOSX_OR_IOS 1 - //#include "TargetConditionals.h" - //#if TARGET_IPHONE_SIMULATOR - //#elif TARGET_OS_IPHONE - //#elif TARGET_OS_MAC - //#else - //#endif -#elif defined(__HAIKU__) - #define MPT_OS_HAIKU 1 -#elif defined(__ANDROID__) || defined(ANDROID) - #define MPT_OS_ANDROID 1 -#elif defined(__linux__) - #define MPT_OS_LINUX 1 -#elif defined(__DragonFly__) - #define MPT_OS_DRAGONFLYBSD 1 -#elif defined(__FreeBSD__) - #define MPT_OS_FREEBSD 1 -#elif defined(__OpenBSD__) - #define MPT_OS_OPENBSD 1 -#elif defined(__NetBSD__) - #define MPT_OS_NETBSD 1 -#elif defined(__unix__) - #define MPT_OS_GENERIC_UNIX 1 -#else - #define MPT_OS_UNKNOWN 1 -#endif - -#ifndef MPT_OS_DJGPP -#define MPT_OS_DJGPP 0 -#endif -#ifndef MPT_OS_EMSCRIPTEN -#define MPT_OS_EMSCRIPTEN 0 -#endif -#ifndef MPT_OS_WINDOWS -#define MPT_OS_WINDOWS 0 -#endif -#ifndef MPT_OS_WINDOWS_WINRT -#define MPT_OS_WINDOWS_WINRT 0 -#endif -#ifndef MPT_OS_MACOSX_OR_IOS -#define MPT_OS_MACOSX_OR_IOS 0 -#endif -#ifndef MPT_OS_HAIKU -#define MPT_OS_HAIKU 0 -#endif -#ifndef MPT_OS_ANDROID -#define MPT_OS_ANDROID 0 -#endif -#ifndef MPT_OS_LINUX -#define MPT_OS_LINUX 0 -#endif -#ifndef MPT_OS_DRAGONFLYBSD -#define MPT_OS_DRAGONFLYBSD 0 -#endif -#ifndef MPT_OS_FREEBSD -#define MPT_OS_FREEBSD 0 -#endif -#ifndef MPT_OS_OPENBSD -#define MPT_OS_OPENBSD 0 -#endif -#ifndef MPT_OS_NETBSD -#define MPT_OS_NETBSD 0 -#endif -#ifndef MPT_OS_GENERIC_UNIX -#define MPT_OS_GENERIC_UNIX 0 -#endif -#ifndef MPT_OS_UNKNOWN -#define MPT_OS_UNKNOWN 0 -#endif - - - -#if MPT_OS_DJGPP -#undef MPT_PLATFORM_MULTITHREADED -#define MPT_PLATFORM_MULTITHREADED 0 -#endif - -#if (MPT_OS_EMSCRIPTEN && !defined(__EMSCRIPTEN_PTHREADS__)) -#undef MPT_PLATFORM_MULTITHREADED -#define MPT_PLATFORM_MULTITHREADED 0 -#endif - - -#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) -#define MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK -#define MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE -#endif - - -#if MPT_OS_DJGPP -#define MPT_COMPILER_QUIRK_NO_WCHAR -#endif - - -#if defined(__arm__) - -#if defined(__SOFTFP__) -#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 -#else -#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 -#endif -#if defined(__VFP_FP__) -// native-endian IEEE754 -#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 -#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 -#elif defined(__MAVERICK__) -// little-endian IEEE754, we assume native-endian though -#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 -#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 -#else -// not IEEE754 -#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 -#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 1 -#endif - -#elif defined(__mips__) - -#if defined(__mips_soft_float) -#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 -#else -#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 -#endif - -#endif - -#if MPT_OS_EMSCRIPTEN -#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 1 -#endif - -#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER32 -#define MPT_COMPILER_QUIRK_FLOAT_PREFER32 0 -#endif -#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER64 -#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 0 -#endif -#ifndef MPT_COMPILER_QUIRK_FLOAT_EMULATED -#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 -#endif -#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN -#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 -#endif -#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 -#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 -#endif +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" Index: common/Endianness.h =================================================================== --- common/Endianness.h (revision 14776) +++ common/Endianness.h (working copy) @@ -12,203 +12,60 @@ #include "BuildSettings.h" -#include -#if MPT_CXX_AT_LEAST(20) -#include -#endif // C++20 -#include +#include "mpt/base/bit.hpp" +#include "mpt/endian/floatingpoint.hpp" +#include "mpt/endian/integer.hpp" -#include -#include +#include -#include -#include -#if MPT_COMPILER_MSVC -#include -#endif - - OPENMPT_NAMESPACE_BEGIN -namespace mpt { +using int64le = mpt::packed< int64, mpt::LittleEndian_tag>; +using int32le = mpt::packed< int32, mpt::LittleEndian_tag>; +using int16le = mpt::packed< int16, mpt::LittleEndian_tag>; +using int8le = mpt::packed< int8 , mpt::LittleEndian_tag>; +using uint64le = mpt::packed; +using uint32le = mpt::packed; +using uint16le = mpt::packed; +using uint8le = mpt::packed; +using int64be = mpt::packed< int64, mpt::BigEndian_tag>; +using int32be = mpt::packed< int32, mpt::BigEndian_tag>; +using int16be = mpt::packed< int16, mpt::BigEndian_tag>; +using int8be = mpt::packed< int8 , mpt::BigEndian_tag>; +using uint64be = mpt::packed; +using uint32be = mpt::packed; +using uint16be = mpt::packed; +using uint8be = mpt::packed; -#if MPT_CXX_AT_LEAST(20) -using std::endian; +using IEEE754binary32LE = mpt::IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = mpt::IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = mpt::IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = mpt::IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64BE; -static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); -constexpr mpt::endian get_endian() noexcept -{ - return mpt::endian::native; -} +// unaligned -constexpr bool endian_is_little() noexcept -{ - return get_endian() == mpt::endian::little; -} +using float32le = mpt::IEEE754binary32EmulatedLE; +using float32be = mpt::IEEE754binary32EmulatedBE; +using float64le = mpt::IEEE754binary64EmulatedLE; +using float64be = mpt::IEEE754binary64EmulatedBE; -constexpr bool endian_is_big() noexcept -{ - return get_endian() == mpt::endian::big; -} -constexpr bool endian_is_weird() noexcept -{ - return !endian_is_little() && !endian_is_big(); -} +// potentially aligned -#else // !C++20 +using float32le_fast = mpt::IEEE754binary32LE; +using float32be_fast = mpt::IEEE754binary32BE; +using float64le_fast = mpt::IEEE754binary64LE; +using float64be_fast = mpt::IEEE754binary64BE; -#if !MPT_COMPILER_GENERIC -#if MPT_COMPILER_MSVC - #define MPT_PLATFORM_LITTLE_ENDIAN -#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG - #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - #define MPT_PLATFORM_BIG_ENDIAN - #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - #define MPT_PLATFORM_LITTLE_ENDIAN - #endif -#endif - -// fallback: -#if !defined(MPT_PLATFORM_BIG_ENDIAN) && !defined(MPT_PLATFORM_LITTLE_ENDIAN) - // taken from boost/detail/endian.hpp - #if (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) \ - || (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) \ - || (defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN)) - #define MPT_PLATFORM_BIG_ENDIAN - #elif (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) \ - || (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) \ - || (defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN)) - #define MPT_PLATFORM_LITTLE_ENDIAN - #elif defined(__sparc) || defined(__sparc__) \ - || defined(_POWER) || defined(__powerpc__) \ - || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ - || defined(_MIPSEB) || defined(_POWER) \ - || defined(__s390__) - #define MPT_PLATFORM_BIG_ENDIAN - #elif defined(__i386__) || defined(__alpha__) \ - || defined(__ia64) || defined(__ia64__) \ - || defined(_M_IX86) || defined(_M_IA64) \ - || defined(_M_ALPHA) || defined(__amd64) \ - || defined(__amd64__) || defined(_M_AMD64) \ - || defined(__x86_64) || defined(__x86_64__) \ - || defined(_M_X64) || defined(__bfin__) - #define MPT_PLATFORM_LITTLE_ENDIAN - #endif -#endif - -#endif // !MPT_COMPILER_GENERIC - -enum class endian -{ - little = 0x78563412u, - big = 0x12345678u, - weird = 1u, -#if MPT_COMPILER_GENERIC - native = 0u, -#elif defined(MPT_PLATFORM_LITTLE_ENDIAN) - native = little, -#elif defined(MPT_PLATFORM_BIG_ENDIAN) - native = big, -#else - native = 0u, -#endif -}; - -static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); - -namespace detail { - - MPT_FORCEINLINE mpt::endian endian_probe() noexcept - { - using endian_probe_type = uint32; - static_assert(sizeof(endian_probe_type) == 4); - constexpr endian_probe_type endian_probe_big = 0x12345678u; - constexpr endian_probe_type endian_probe_little = 0x78563412u; - const std::array probe{ {mpt::as_byte(0x12), mpt::as_byte(0x34), mpt::as_byte(0x56), mpt::as_byte(0x78)} }; - const endian_probe_type test = mpt::bit_cast(probe); - mpt::endian result = mpt::endian::native; - switch(test) - { - case endian_probe_big: - result = mpt::endian::big; - break; - case endian_probe_little: - result = mpt::endian::little; - break; - default: - result = mpt::endian::weird; - break; - } - return result; - } - -} // namespace detail - -MPT_FORCEINLINE mpt::endian get_endian() noexcept -{ -#if MPT_COMPILER_MSVC -#pragma warning(push) -#pragma warning(disable:6285) // false-positive: ( || ) is always a non-zero constant. -#endif // MPT_COMPILER_MSVC - if constexpr((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) - { - return mpt::endian::native; - } else - { - return detail::endian_probe(); - } -#if MPT_COMPILER_MSVC -#pragma warning(pop) -#endif // MPT_COMPILER_MSVC -} - -MPT_FORCEINLINE bool endian_is_little() noexcept -{ - return get_endian() == mpt::endian::little; -} - -MPT_FORCEINLINE bool endian_is_big() noexcept -{ - return get_endian() == mpt::endian::big; -} - -MPT_FORCEINLINE bool endian_is_weird() noexcept -{ - return !endian_is_little() && !endian_is_big(); -} - -#endif // C++20 - - - -} // namespace mpt - - - -struct BigEndian_tag -{ - static constexpr mpt::endian endian = mpt::endian::big; -}; - -struct LittleEndian_tag -{ - static constexpr mpt::endian endian = mpt::endian::little; -}; - - - -namespace mpt { - template inline void SwapBufferEndian(std::size_t elementSize, Tbyte * buffer, std::size_t elements) { @@ -220,837 +77,8 @@ } } -} // namespace mpt - -namespace mpt { -namespace detail { -constexpr inline uint16 constexpr_bswap16(uint16 x) noexcept -{ - return uint16(0) - | ((x >> 8) & 0x00FFu) - | ((x << 8) & 0xFF00u) - ; -} -constexpr inline uint32 constexpr_bswap32(uint32 x) noexcept -{ - return uint32(0) - | ((x & 0x000000FFu) << 24) - | ((x & 0x0000FF00u) << 8) - | ((x & 0x00FF0000u) >> 8) - | ((x & 0xFF000000u) >> 24) - ; -} -constexpr inline uint64 constexpr_bswap64(uint64 x) noexcept -{ - return uint64(0) - | (((x >> 0) & 0xffull) << 56) - | (((x >> 8) & 0xffull) << 48) - | (((x >> 16) & 0xffull) << 40) - | (((x >> 24) & 0xffull) << 32) - | (((x >> 32) & 0xffull) << 24) - | (((x >> 40) & 0xffull) << 16) - | (((x >> 48) & 0xffull) << 8) - | (((x >> 56) & 0xffull) << 0) - ; -} -} // namespace detail -} // namespace mpt - -#if MPT_COMPILER_GCC -#define MPT_bswap16 __builtin_bswap16 -#define MPT_bswap32 __builtin_bswap32 -#define MPT_bswap64 __builtin_bswap64 -#elif MPT_COMPILER_MSVC -#define MPT_bswap16 _byteswap_ushort -#define MPT_bswap32 _byteswap_ulong -#define MPT_bswap64 _byteswap_uint64 -#endif - -namespace mpt { namespace detail { -// catch system macros -#ifndef MPT_bswap16 -#ifdef bswap16 -MPT_FORCEINLINE uint16 mpt_bswap16(uint16 x) { return bswap16(x); } -#define MPT_bswap16 mpt::detail::mpt_bswap16 -#endif -#endif -#ifndef MPT_bswap32 -#ifdef bswap32 -MPT_FORCEINLINE uint32 mpt_bswap32(uint32 x) { return bswap32(x); } -#define MPT_bswap32 mpt::detail::mpt_bswap32 -#endif -#endif -#ifndef MPT_bswap64 -#ifdef bswap64 -MPT_FORCEINLINE uint64 mpt_bswap64(uint64 x) { return bswap64(x); } -#define MPT_bswap64 mpt::detail::mpt_bswap64 -#endif -#endif -} } // namespace mpt::detail - -// No intrinsics available -#ifndef MPT_bswap16 -#define MPT_bswap16(x) mpt::detail::constexpr_bswap16(x) -#endif -#ifndef MPT_bswap32 -#define MPT_bswap32(x) mpt::detail::constexpr_bswap32(x) -#endif -#ifndef MPT_bswap64 -#define MPT_bswap64(x) mpt::detail::constexpr_bswap64(x) -#endif - - - -template -MPT_CONSTEXPRINLINE std::array EndianEncode(T val) noexcept -{ - static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); - static_assert(std::numeric_limits::is_integer); - static_assert(!std::numeric_limits::is_signed); - static_assert(sizeof(T) == size); - using base_type = T; - using unsigned_base_type = typename std::make_unsigned::type; - using endian_type = Tendian; - unsigned_base_type uval = static_cast(val); - std::array data{}; - if constexpr(endian_type::endian == mpt::endian::little) - { - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - data[i] = static_cast(static_cast((uval >> (i*8)) & 0xffu)); - } - } else - { - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - data[(sizeof(base_type)-1) - i] = static_cast(static_cast((uval >> (i*8)) & 0xffu)); - } - } - return data; -} - -template -MPT_CONSTEXPRINLINE T EndianDecode(std::array data) noexcept -{ - static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); - static_assert(std::numeric_limits::is_integer); - static_assert(!std::numeric_limits::is_signed); - static_assert(sizeof(T) == size); - using base_type = T; - using unsigned_base_type = typename std::make_unsigned::type; - using endian_type = Tendian; - base_type val = base_type(); - unsigned_base_type uval = unsigned_base_type(); - if constexpr(endian_type::endian == mpt::endian::little) - { - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - uval |= static_cast(static_cast(data[i])) << (i*8); - } - } else - { - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - uval |= static_cast(static_cast(data[(sizeof(base_type)-1) - i])) << (i*8); - } - } - val = static_cast(uval); - return val; -} - - -namespace mpt -{ -namespace detail -{ - -MPT_CONSTEXPR20_FUN uint64 SwapBytes(uint64 value) noexcept { MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return mpt::detail::constexpr_bswap64(value); } else { return MPT_bswap64(value); } } -MPT_CONSTEXPR20_FUN uint32 SwapBytes(uint32 value) noexcept { MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return mpt::detail::constexpr_bswap32(value); } else { return MPT_bswap32(value); } } -MPT_CONSTEXPR20_FUN uint16 SwapBytes(uint16 value) noexcept { MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return mpt::detail::constexpr_bswap16(value); } else { return MPT_bswap16(value); } } -MPT_CONSTEXPR20_FUN int64 SwapBytes(int64 value) noexcept { MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return mpt::detail::constexpr_bswap64(value); } else { return MPT_bswap64(value); } } -MPT_CONSTEXPR20_FUN int32 SwapBytes(int32 value) noexcept { MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return mpt::detail::constexpr_bswap32(value); } else { return MPT_bswap32(value); } } -MPT_CONSTEXPR20_FUN int16 SwapBytes(int16 value) noexcept { MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return mpt::detail::constexpr_bswap16(value); } else { return MPT_bswap16(value); } } - -// Do NOT remove these overloads, even if they seem useless. -// We do not want risking to extend 8bit integers to int and then -// endian-converting and casting back to int. -// Thus these overloads. -MPT_CONSTEXPR20_FUN uint8 SwapBytes(uint8 value) noexcept { return value; } -MPT_CONSTEXPR20_FUN int8 SwapBytes(int8 value) noexcept { return value; } -MPT_CONSTEXPR20_FUN char SwapBytes(char value) noexcept { return value; } - -} // namespace detail -} // namespace mpt - -#undef MPT_bswap16 -#undef MPT_bswap32 -#undef MPT_bswap64 - - -// 1.0f --> 0x3f800000u -MPT_FORCEINLINE uint32 EncodeIEEE754binary32(float32 f) -{ - if constexpr(mpt::float_traits::is_ieee754_binary32ne) - { - return mpt::bit_cast(f); - } else - { - int e = 0; - float m = std::frexp(f, &e); - if(e == 0 && std::fabs(m) == 0.0f) - { - uint32 expo = 0u; - uint32 sign = std::signbit(m) ? 0x01u : 0x00u; - uint32 mant = 0u; - uint32 i = 0u; - i |= (mant << 0) & 0x007fffffu; - i |= (expo << 23) & 0x7f800000u; - i |= (sign << 31) & 0x80000000u; - return i; - } else - { - uint32 expo = e + 127 - 1; - uint32 sign = std::signbit(m) ? 0x01u : 0x00u; - uint32 mant = static_cast(std::fabs(std::ldexp(m, 24))); - uint32 i = 0u; - i |= (mant << 0) & 0x007fffffu; - i |= (expo << 23) & 0x7f800000u; - i |= (sign << 31) & 0x80000000u; - return i; - } - } -} -MPT_FORCEINLINE uint64 EncodeIEEE754binary64(float64 f) -{ - if constexpr(mpt::float_traits::is_ieee754_binary64ne) - { - return mpt::bit_cast(f); - } else - { - int e = 0; - double m = std::frexp(f, &e); - if(e == 0 && std::fabs(m) == 0.0) - { - uint64 expo = 0u; - uint64 sign = std::signbit(m) ? 0x01u : 0x00u; - uint64 mant = 0u; - uint64 i = 0u; - i |= (mant << 0) & 0x000fffffffffffffull; - i |= (expo << 52) & 0x7ff0000000000000ull; - i |= (sign << 63) & 0x8000000000000000ull; - return i; - } else - { - uint64 expo = static_cast(e) + 1023 - 1; - uint64 sign = std::signbit(m) ? 0x01u : 0x00u; - uint64 mant = static_cast(std::fabs(std::ldexp(m, 53))); - uint64 i = 0u; - i |= (mant << 0) & 0x000fffffffffffffull; - i |= (expo << 52) & 0x7ff0000000000000ull; - i |= (sign << 63) & 0x8000000000000000ull; - return i; - } - } -} - -// 0x3f800000u --> 1.0f -MPT_FORCEINLINE float32 DecodeIEEE754binary32(uint32 i) -{ - if constexpr(mpt::float_traits::is_ieee754_binary32ne) - { - return mpt::bit_cast(i); - } else - { - uint32 mant = (i & 0x007fffffu) >> 0; - uint32 expo = (i & 0x7f800000u) >> 23; - uint32 sign = (i & 0x80000000u) >> 31; - if(expo == 0) - { - float m = sign ? -static_cast(mant) : static_cast(mant); - int e = static_cast(expo) - 127 + 1 - 24; - float f = std::ldexp(m, e); - return static_cast(f); - } else - { - mant |= 0x00800000u; - float m = sign ? -static_cast(mant) : static_cast(mant); - int e = static_cast(expo) - 127 + 1 - 24; - float f = std::ldexp(m, e); - return static_cast(f); - } - } -} -MPT_FORCEINLINE float64 DecodeIEEE754binary64(uint64 i) -{ - if constexpr(mpt::float_traits::is_ieee754_binary64ne) - { - return mpt::bit_cast(i); - } else - { - uint64 mant = (i & 0x000fffffffffffffull) >> 0; - uint64 expo = (i & 0x7ff0000000000000ull) >> 52; - uint64 sign = (i & 0x8000000000000000ull) >> 63; - if(expo == 0) - { - double m = sign ? -static_cast(mant) : static_cast(mant); - int e = static_cast(expo) - 1023 + 1 - 53; - double f = std::ldexp(m, e); - return static_cast(f); - } else - { - mant |= 0x0010000000000000ull; - double m = sign ? -static_cast(mant) : static_cast(mant); - int e = static_cast(expo) - 1023 + 1 - 53; - double f = std::ldexp(m, e); - return static_cast(f); - } - } -} - - -// template parameters are byte indices corresponding to the individual bytes of iee754 in memory -template -struct IEEE754binary32Emulated -{ -public: - using self_t = IEEE754binary32Emulated; - std::byte bytes[4]; -public: - MPT_FORCEINLINE std::byte GetByte(std::size_t i) const - { - return bytes[i]; - } - IEEE754binary32Emulated() = default; - MPT_FORCEINLINE explicit IEEE754binary32Emulated(float32 f) - { - SetInt32(EncodeIEEE754binary32(f)); - } - // b0...b3 are in memory order, i.e. depend on the endianness of this type - // little endian: (0x00,0x00,0x80,0x3f) - // big endian: (0x3f,0x80,0x00,0x00) - MPT_FORCEINLINE explicit IEEE754binary32Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3) - { - bytes[0] = b0; - bytes[1] = b1; - bytes[2] = b2; - bytes[3] = b3; - } - MPT_FORCEINLINE operator float32 () const - { - return DecodeIEEE754binary32(GetInt32()); - } - MPT_FORCEINLINE self_t & SetInt32(uint32 i) - { - bytes[hihi] = static_cast(i >> 24); - bytes[hilo] = static_cast(i >> 16); - bytes[lohi] = static_cast(i >> 8); - bytes[lolo] = static_cast(i >> 0); - return *this; - } - MPT_FORCEINLINE uint32 GetInt32() const - { - return 0u - | (static_cast(bytes[hihi]) << 24) - | (static_cast(bytes[hilo]) << 16) - | (static_cast(bytes[lohi]) << 8) - | (static_cast(bytes[lolo]) << 0) - ; - } - MPT_FORCEINLINE bool operator == (const self_t &cmp) const - { - return true - && bytes[0] == cmp.bytes[0] - && bytes[1] == cmp.bytes[1] - && bytes[2] == cmp.bytes[2] - && bytes[3] == cmp.bytes[3] - ; - } - MPT_FORCEINLINE bool operator != (const self_t &cmp) const - { - return !(*this == cmp); - } -}; -template -struct IEEE754binary64Emulated -{ -public: - using self_t = IEEE754binary64Emulated; - std::byte bytes[8]; -public: - MPT_FORCEINLINE std::byte GetByte(std::size_t i) const - { - return bytes[i]; - } - IEEE754binary64Emulated() = default; - MPT_FORCEINLINE explicit IEEE754binary64Emulated(float64 f) - { - SetInt64(EncodeIEEE754binary64(f)); - } - MPT_FORCEINLINE explicit IEEE754binary64Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) - { - bytes[0] = b0; - bytes[1] = b1; - bytes[2] = b2; - bytes[3] = b3; - bytes[4] = b4; - bytes[5] = b5; - bytes[6] = b6; - bytes[7] = b7; - } - MPT_FORCEINLINE operator float64 () const - { - return DecodeIEEE754binary64(GetInt64()); - } - MPT_FORCEINLINE self_t & SetInt64(uint64 i) - { - bytes[hihihi] = static_cast(i >> 56); - bytes[hihilo] = static_cast(i >> 48); - bytes[hilohi] = static_cast(i >> 40); - bytes[hilolo] = static_cast(i >> 32); - bytes[lohihi] = static_cast(i >> 24); - bytes[lohilo] = static_cast(i >> 16); - bytes[lolohi] = static_cast(i >> 8); - bytes[lololo] = static_cast(i >> 0); - return *this; - } - MPT_FORCEINLINE uint64 GetInt64() const - { - return 0u - | (static_cast(bytes[hihihi]) << 56) - | (static_cast(bytes[hihilo]) << 48) - | (static_cast(bytes[hilohi]) << 40) - | (static_cast(bytes[hilolo]) << 32) - | (static_cast(bytes[lohihi]) << 24) - | (static_cast(bytes[lohilo]) << 16) - | (static_cast(bytes[lolohi]) << 8) - | (static_cast(bytes[lololo]) << 0) - ; - } - MPT_FORCEINLINE bool operator == (const self_t &cmp) const - { - return true - && bytes[0] == cmp.bytes[0] - && bytes[1] == cmp.bytes[1] - && bytes[2] == cmp.bytes[2] - && bytes[3] == cmp.bytes[3] - && bytes[4] == cmp.bytes[4] - && bytes[5] == cmp.bytes[5] - && bytes[6] == cmp.bytes[6] - && bytes[7] == cmp.bytes[7] - ; - } - MPT_FORCEINLINE bool operator != (const self_t &cmp) const - { - return !(*this == cmp); - } -}; - -using IEEE754binary32EmulatedBE = IEEE754binary32Emulated<0,1,2,3>; -using IEEE754binary32EmulatedLE = IEEE754binary32Emulated<3,2,1,0>; -using IEEE754binary64EmulatedBE = IEEE754binary64Emulated<0,1,2,3,4,5,6,7>; -using IEEE754binary64EmulatedLE = IEEE754binary64Emulated<7,6,5,4,3,2,1,0>; - -MPT_BINARY_STRUCT(IEEE754binary32EmulatedBE, 4) -MPT_BINARY_STRUCT(IEEE754binary32EmulatedLE, 4) -MPT_BINARY_STRUCT(IEEE754binary64EmulatedBE, 8) -MPT_BINARY_STRUCT(IEEE754binary64EmulatedLE, 8) - -template -struct IEEE754binary32Native -{ -public: - float32 value; -public: - MPT_FORCEINLINE std::byte GetByte(std::size_t i) const - { - static_assert(endian == mpt::endian::little || endian == mpt::endian::big); - if constexpr(endian == mpt::endian::little) - { - return static_cast(EncodeIEEE754binary32(value) >> (i*8)); - } - if constexpr(endian == mpt::endian::big) - { - return static_cast(EncodeIEEE754binary32(value) >> ((4-1-i)*8)); - } - } - IEEE754binary32Native() = default; - MPT_FORCEINLINE explicit IEEE754binary32Native(float32 f) - { - value = f; - } - // b0...b3 are in memory order, i.e. depend on the endianness of this type - // little endian: (0x00,0x00,0x80,0x3f) - // big endian: (0x3f,0x80,0x00,0x00) - MPT_FORCEINLINE explicit IEEE754binary32Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3) - { - static_assert(endian == mpt::endian::little || endian == mpt::endian::big); - if constexpr(endian == mpt::endian::little) - { - value = DecodeIEEE754binary32(0u - | (static_cast(b0) << 0) - | (static_cast(b1) << 8) - | (static_cast(b2) << 16) - | (static_cast(b3) << 24) - ); - } - if constexpr(endian == mpt::endian::big) - { - value = DecodeIEEE754binary32(0u - | (static_cast(b0) << 24) - | (static_cast(b1) << 16) - | (static_cast(b2) << 8) - | (static_cast(b3) << 0) - ); - } - } - MPT_FORCEINLINE operator float32 () const - { - return value; - } - MPT_FORCEINLINE IEEE754binary32Native & SetInt32(uint32 i) - { - value = DecodeIEEE754binary32(i); - return *this; - } - MPT_FORCEINLINE uint32 GetInt32() const - { - return EncodeIEEE754binary32(value); - } - MPT_FORCEINLINE bool operator == (const IEEE754binary32Native &cmp) const - { - return value == cmp.value; - } - MPT_FORCEINLINE bool operator != (const IEEE754binary32Native &cmp) const - { - return value != cmp.value; - } -}; - -template -struct IEEE754binary64Native -{ -public: - float64 value; -public: - MPT_FORCEINLINE std::byte GetByte(std::size_t i) const - { - static_assert(endian == mpt::endian::little || endian == mpt::endian::big); - if constexpr(endian == mpt::endian::little) - { - return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> (i*8))); - } - if constexpr(endian == mpt::endian::big) - { - return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> ((8-1-i)*8))); - } - } - IEEE754binary64Native() = default; - MPT_FORCEINLINE explicit IEEE754binary64Native(float64 f) - { - value = f; - } - MPT_FORCEINLINE explicit IEEE754binary64Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) - { - static_assert(endian == mpt::endian::little || endian == mpt::endian::big); - if constexpr(endian == mpt::endian::little) - { - value = DecodeIEEE754binary64(0ull - | (static_cast(b0) << 0) - | (static_cast(b1) << 8) - | (static_cast(b2) << 16) - | (static_cast(b3) << 24) - | (static_cast(b4) << 32) - | (static_cast(b5) << 40) - | (static_cast(b6) << 48) - | (static_cast(b7) << 56) - ); - } - if constexpr(endian == mpt::endian::big) - { - value = DecodeIEEE754binary64(0ull - | (static_cast(b0) << 56) - | (static_cast(b1) << 48) - | (static_cast(b2) << 40) - | (static_cast(b3) << 32) - | (static_cast(b4) << 24) - | (static_cast(b5) << 16) - | (static_cast(b6) << 8) - | (static_cast(b7) << 0) - ); - } - } - MPT_FORCEINLINE operator float64 () const - { - return value; - } - MPT_FORCEINLINE IEEE754binary64Native & SetInt64(uint64 i) - { - value = DecodeIEEE754binary64(i); - return *this; - } - MPT_FORCEINLINE uint64 GetInt64() const - { - return EncodeIEEE754binary64(value); - } - MPT_FORCEINLINE bool operator == (const IEEE754binary64Native &cmp) const - { - return value == cmp.value; - } - MPT_FORCEINLINE bool operator != (const IEEE754binary64Native &cmp) const - { - return value != cmp.value; - } -}; - -static_assert((sizeof(IEEE754binary32Native<>) == 4)); -static_assert((sizeof(IEEE754binary64Native<>) == 8)); - -namespace mpt { -template <> struct is_binary_safe< IEEE754binary32Native<> > : public std::true_type { }; -template <> struct is_binary_safe< IEEE754binary64Native<> > : public std::true_type { }; -} - -template struct IEEE754binary_types { - using IEEE754binary32LE = IEEE754binary32EmulatedLE; - using IEEE754binary32BE = IEEE754binary32EmulatedBE; - using IEEE754binary64LE = IEEE754binary64EmulatedLE; - using IEEE754binary64BE = IEEE754binary64EmulatedBE; -}; -template <> struct IEEE754binary_types { - using IEEE754binary32LE = IEEE754binary32Native<>; - using IEEE754binary32BE = IEEE754binary32EmulatedBE; - using IEEE754binary64LE = IEEE754binary64Native<>; - using IEEE754binary64BE = IEEE754binary64EmulatedBE; -}; -template <> struct IEEE754binary_types { - using IEEE754binary32LE = IEEE754binary32EmulatedLE; - using IEEE754binary32BE = IEEE754binary32Native<>; - using IEEE754binary64LE = IEEE754binary64EmulatedLE; - using IEEE754binary64BE = IEEE754binary64Native<>; -}; - -using IEEE754binary32LE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32LE; -using IEEE754binary32BE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32BE; -using IEEE754binary64LE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64LE; -using IEEE754binary64BE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64BE; - -static_assert(sizeof(IEEE754binary32LE) == 4); -static_assert(sizeof(IEEE754binary32BE) == 4); -static_assert(sizeof(IEEE754binary64LE) == 8); -static_assert(sizeof(IEEE754binary64BE) == 8); - - -// unaligned - -using float32le = IEEE754binary32EmulatedLE; -using float32be = IEEE754binary32EmulatedBE; -using float64le = IEEE754binary64EmulatedLE; -using float64be = IEEE754binary64EmulatedBE; - -static_assert(sizeof(float32le) == 4); -static_assert(sizeof(float32be) == 4); -static_assert(sizeof(float64le) == 8); -static_assert(sizeof(float64be) == 8); - - -// potentially aligned - -using float32le_fast = IEEE754binary32LE; -using float32be_fast = IEEE754binary32BE; -using float64le_fast = IEEE754binary64LE; -using float64be_fast = IEEE754binary64BE; - -static_assert(sizeof(float32le_fast) == 4); -static_assert(sizeof(float32be_fast) == 4); -static_assert(sizeof(float64le_fast) == 8); -static_assert(sizeof(float64be_fast) == 8); - - - -// On-disk integer types with defined endianness and no alignemnt requirements -// Note: To easily debug module loaders (and anything else that uses this -// wrapper struct), you can use the Debugger Visualizers available in -// build/vs/debug/ to conveniently view the wrapped contents. - -template -struct packed -{ -public: - using base_type = T; - using endian_type = Tendian; -public: - std::array data; -public: - MPT_CONSTEXPR20_FUN void set(base_type val) noexcept - { - static_assert(std::numeric_limits::is_integer); - MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) - { - if constexpr(endian_type::endian == mpt::endian::big) - { - typename std::make_unsigned::type uval = val; - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - data[i] = static_cast((uval >> (8*(sizeof(base_type)-1-i))) & 0xffu); - } - } else - { - typename std::make_unsigned::type uval = val; - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - data[i] = static_cast((uval >> (8*i)) & 0xffu); - } - } - } else - { - if constexpr(mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) - { - if constexpr(mpt::endian::native != endian_type::endian) - { - val = mpt::detail::SwapBytes(val); - } - std::memcpy(data.data(), &val, sizeof(val)); - } else - { - using unsigned_base_type = typename std::make_unsigned::type; - data = EndianEncode(val); - } - } - } - MPT_CONSTEXPR20_FUN base_type get() const noexcept - { - static_assert(std::numeric_limits::is_integer); - MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) - { - if constexpr(endian_type::endian == mpt::endian::big) - { - typename std::make_unsigned::type uval = 0; - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - uval |= static_cast::type>(data[i]) << (8*(sizeof(base_type)-1-i)); - } - return static_cast(uval); - } else - { - typename std::make_unsigned::type uval = 0; - for(std::size_t i = 0; i < sizeof(base_type); ++i) - { - uval |= static_cast::type>(data[i]) << (8*i); - } - return static_cast(uval); - } - } else - { - if constexpr(mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) - { - base_type val = base_type(); - std::memcpy(&val, data.data(), sizeof(val)); - if constexpr(mpt::endian::native != endian_type::endian) - { - val = mpt::detail::SwapBytes(val); - } - return val; - } else - { - using unsigned_base_type = typename std::make_unsigned::type; - return EndianDecode(data); - } - } - } - MPT_CONSTEXPR20_FUN packed & operator = (const base_type & val) noexcept { set(val); return *this; } - MPT_CONSTEXPR20_FUN operator base_type () const noexcept { return get(); } -public: - MPT_CONSTEXPR20_FUN packed & operator &= (base_type val) noexcept { set(get() & val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator |= (base_type val) noexcept { set(get() | val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator ^= (base_type val) noexcept { set(get() ^ val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator += (base_type val) noexcept { set(get() + val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator -= (base_type val) noexcept { set(get() - val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator *= (base_type val) noexcept { set(get() * val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator /= (base_type val) noexcept { set(get() / val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator %= (base_type val) noexcept { set(get() % val); return *this; } - MPT_CONSTEXPR20_FUN packed & operator ++ () noexcept { set(get() + 1); return *this; } // prefix - MPT_CONSTEXPR20_FUN packed & operator -- () noexcept { set(get() - 1); return *this; } // prefix - MPT_CONSTEXPR20_FUN base_type operator ++ (int) noexcept { base_type old = get(); set(old + 1); return old; } // postfix - MPT_CONSTEXPR20_FUN base_type operator -- (int) noexcept { base_type old = get(); set(old - 1); return old; } // postfix -}; - -using int64le = packed< int64, LittleEndian_tag>; -using int32le = packed< int32, LittleEndian_tag>; -using int16le = packed< int16, LittleEndian_tag>; -using int8le = packed< int8 , LittleEndian_tag>; -using uint64le = packed; -using uint32le = packed; -using uint16le = packed; -using uint8le = packed; - -using int64be = packed< int64, BigEndian_tag>; -using int32be = packed< int32, BigEndian_tag>; -using int16be = packed< int16, BigEndian_tag>; -using int8be = packed< int8 , BigEndian_tag>; -using uint64be = packed; -using uint32be = packed; -using uint16be = packed; -using uint8be = packed; - -OPENMPT_NAMESPACE_END -namespace std { - template class numeric_limits> : public std::numeric_limits {}; - template class numeric_limits> : public std::numeric_limits {}; -} // namespace std -OPENMPT_NAMESPACE_BEGIN - -MPT_BINARY_STRUCT(int64le, 8) -MPT_BINARY_STRUCT(int32le, 4) -MPT_BINARY_STRUCT(int16le, 2) -MPT_BINARY_STRUCT(int8le , 1) -MPT_BINARY_STRUCT(uint64le, 8) -MPT_BINARY_STRUCT(uint32le, 4) -MPT_BINARY_STRUCT(uint16le, 2) -MPT_BINARY_STRUCT(uint8le , 1) - -MPT_BINARY_STRUCT(int64be, 8) -MPT_BINARY_STRUCT(int32be, 4) -MPT_BINARY_STRUCT(int16be, 2) -MPT_BINARY_STRUCT(int8be , 1) -MPT_BINARY_STRUCT(uint64be, 8) -MPT_BINARY_STRUCT(uint32be, 4) -MPT_BINARY_STRUCT(uint16be, 2) -MPT_BINARY_STRUCT(uint8be , 1) - -namespace mpt { - -template struct make_le { using type = packed::type, LittleEndian_tag>; }; -template struct make_be { using type = packed::type, BigEndian_tag>; }; - -template -MPT_CONSTEXPR20_FUN auto as_le(T v) noexcept -> typename mpt::make_le::type>::type -{ - typename mpt::make_le::type>::type res{}; - res = v; - return res; -} -template -MPT_CONSTEXPR20_FUN auto as_be(T v) noexcept -> typename mpt::make_be::type>::type -{ - typename mpt::make_be::type>::type res{}; - res = v; - return res; -} - -template -MPT_CONSTEXPR20_FUN Tpacked as_endian(typename Tpacked::base_type v) noexcept -{ - Tpacked res{}; - res = v; - return res; -} - -} // namespace mpt - - - // 24-bit integer wrapper (for 24-bit PCM) struct int24 { Index: common/FileReader.cpp =================================================================== --- common/FileReader.cpp (revision 14776) +++ common/FileReader.cpp (working copy) @@ -74,9 +74,9 @@ HANDLE hFile = NULL; #if MPT_OS_WINDOWS_WINRT - hFile = mpt::Windows::CheckFileHANDLE(CreateFile2(tempName.AsNative().c_str(), GENERIC_WRITE, FILE_SHARE_READ, CREATE_ALWAYS, NULL)); + hFile = mpt::windows::CheckFileHANDLE(CreateFile2(tempName.AsNative().c_str(), GENERIC_WRITE, FILE_SHARE_READ, CREATE_ALWAYS, NULL)); #else - hFile = mpt::Windows::CheckFileHANDLE(CreateFile(tempName.AsNative().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL)); + hFile = mpt::windows::CheckFileHANDLE(CreateFile(tempName.AsNative().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL)); #endif while(!file.EndOfFile()) { @@ -89,7 +89,7 @@ DWORD chunkDone = 0; try { - mpt::Windows::CheckBOOL(WriteFile(hFile, view.data() + written, chunkSize, &chunkDone, NULL)); + mpt::windows::CheckBOOL(WriteFile(hFile, view.data() + written, chunkSize, &chunkDone, NULL)); } catch(...) { CloseHandle(hFile); Index: common/FileReader.h =================================================================== --- common/FileReader.h (revision 14776) +++ common/FileReader.h (working copy) @@ -556,7 +556,7 @@ template bool ReadSizedString(TFileCursor &f, char (&destBuffer)[destSize], const typename TFileCursor::off_t maxLength = std::numeric_limits::max()) { - packed srcSize; // Enforce usage of a packed type by ensuring that the passed type has the required typedefs + mpt::packed srcSize; // Enforce usage of a packed type by ensuring that the passed type has the required typedefs if(!Read(f, srcSize)) return false; return ReadString(f, destBuffer, std::min(static_cast(srcSize), maxLength)); @@ -568,7 +568,7 @@ template bool ReadSizedString(TFileCursor &f, std::string &dest, const typename TFileCursor::off_t maxLength = std::numeric_limits::max()) { - packed srcSize; // Enforce usage of a packed type by ensuring that the passed type has the required typedefs + mpt::packed srcSize; // Enforce usage of a packed type by ensuring that the passed type has the required typedefs if(!Read(f, srcSize)) return false; return ReadString(f, dest, std::min(static_cast(srcSize), maxLength)); @@ -580,7 +580,7 @@ template bool ReadSizedString(TFileCursor &f, mpt::charbuf &dest, const typename TFileCursor::off_t maxLength = std::numeric_limits::max()) { - packed srcSize; // Enforce usage of a packed type by ensuring that the passed type has the required typedefs + mpt::packed srcSize; // Enforce usage of a packed type by ensuring that the passed type has the required typedefs if(!Read(f, srcSize)) return false; return ReadString(f, dest, std::min(static_cast(srcSize), maxLength)); Index: common/misc_util.cpp =================================================================== --- common/misc_util.cpp (revision 14776) +++ common/misc_util.cpp (working copy) @@ -11,353 +11,45 @@ #include "stdafx.h" #include "misc_util.h" -#include "mptOSError.h" +#include "mpt/binary/hex.hpp" +#include "mpt/binary/base64.hpp" +#include "mpt/binary/base64url.hpp" -#if MPT_OS_WINDOWS -#include -#endif - - OPENMPT_NAMESPACE_BEGIN - - namespace Util { - -static constexpr mpt::uchar EncodeNibble[16] = { - UC_('0'), UC_('1'), UC_('2'), UC_('3'), - UC_('4'), UC_('5'), UC_('6'), UC_('7'), - UC_('8'), UC_('9'), UC_('A'), UC_('B'), - UC_('C'), UC_('D'), UC_('E'), UC_('F') }; - -static inline bool DecodeByte(uint8 &byte, mpt::uchar c1, mpt::uchar c2) -{ - byte = 0; - if(UC_('0') <= c1 && c1 <= UC_('9')) - { - byte += static_cast((c1 - UC_('0')) << 4); - } else if(UC_('A') <= c1 && c1 <= UC_('F')) - { - byte += static_cast((c1 - UC_('A') + 10) << 4); - } else if(UC_('a') <= c1 && c1 <= UC_('f')) - { - byte += static_cast((c1 - UC_('a') + 10) << 4); - } else - { - return false; - } - if(UC_('0') <= c2 && c2 <= UC_('9')) - { - byte += static_cast(c2 - UC_('0')); - } else if(UC_('A') <= c2 && c2 <= UC_('F')) - { - byte += static_cast(c2 - UC_('A') + 10); - } else if(UC_('a') <= c2 && c2 <= UC_('f')) - { - byte += static_cast(c2 - UC_('a') + 10); - } else - { - return false; - } - return true; -} - mpt::ustring BinToHex(mpt::const_byte_span src) { - mpt::ustring result; - result.reserve(src.size() * 2); - for(std::byte byte : src) - { - result.push_back(EncodeNibble[(mpt::byte_cast(byte) & 0xf0) >> 4]); - result.push_back(EncodeNibble[mpt::byte_cast(byte) & 0x0f]); - } - return result; + return mpt::encode_hex(src); } std::vector HexToBin(const mpt::ustring &src) { - std::vector result; - result.reserve(src.size() / 2); - for(std::size_t i = 0; (i + 1) < src.size(); i += 2) - { - uint8 byte = 0; - if(!DecodeByte(byte, src[i], src[i + 1])) - { - return result; - } - result.push_back(mpt::byte_cast(byte)); - } - return result; + return mpt::decode_hex(src); } - - -static constexpr mpt::uchar base64url[64] = { - UC_('A'),UC_('B'),UC_('C'),UC_('D'),UC_('E'),UC_('F'),UC_('G'),UC_('H'),UC_('I'),UC_('J'),UC_('K'),UC_('L'),UC_('M'),UC_('N'),UC_('O'),UC_('P'), - UC_('Q'),UC_('R'),UC_('S'),UC_('T'),UC_('U'),UC_('V'),UC_('W'),UC_('X'),UC_('Y'),UC_('Z'),UC_('a'),UC_('b'),UC_('c'),UC_('d'),UC_('e'),UC_('f'), - UC_('g'),UC_('h'),UC_('i'),UC_('j'),UC_('k'),UC_('l'),UC_('m'),UC_('n'),UC_('o'),UC_('p'),UC_('q'),UC_('r'),UC_('s'),UC_('t'),UC_('u'),UC_('v'), - UC_('w'),UC_('x'),UC_('y'),UC_('z'),UC_('0'),UC_('1'),UC_('2'),UC_('3'),UC_('4'),UC_('5'),UC_('6'),UC_('7'),UC_('8'),UC_('9'),UC_('-'),UC_('_') -}; - mpt::ustring BinToBase64url(mpt::const_byte_span src) { - mpt::ustring result; - result.reserve(4 * ((src.size() + 2) / 3)); - uint32 bits = 0; - std::size_t bytes = 0; - for(std::byte byte : src) - { - bits <<= 8; - bits |= mpt::byte_cast(byte); - bytes++; - if(bytes == 3) - { - result.push_back(base64url[(bits >> 18) & 0x3f]); - result.push_back(base64url[(bits >> 12) & 0x3f]); - result.push_back(base64url[(bits >> 6) & 0x3f]); - result.push_back(base64url[(bits >> 0) & 0x3f]); - bits = 0; - bytes = 0; - } - } - std::size_t padding = 0; - while(bytes != 0) - { - bits <<= 8; - padding++; - bytes++; - if(bytes == 3) - { - result.push_back(base64url[(bits >> 18) & 0x3f]); - result.push_back(base64url[(bits >> 12) & 0x3f]); - if(padding <= 1) - { - result.push_back(base64url[(bits >> 6) & 0x3f]); - } - if(padding <= 0) - { - result.push_back(base64url[(bits >> 0) & 0x3f]); - } - bits = 0; - bytes = 0; - } - } - return result; + return mpt::encode_base64url(src); } -static uint8 GetBase64urlBits(mpt::uchar c) -{ - for(uint8 i = 0; i < 64; ++i) - { - if(base64url[i] == c) - { - return i; - } - } - throw base64_parse_error(); -} - std::vector Base64urlToBin(const mpt::ustring &src) { - std::vector result; - result.reserve(3 * ((src.length() + 2) / 4)); - uint32 bits = 0; - std::size_t chars = 0; - for(mpt::uchar c : src) - { - bits <<= 6; - bits |= GetBase64urlBits(c); - chars++; - if(chars == 4) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); - result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); - result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); - bits = 0; - chars = 0; - } - } - uint32 padding = 0; - if(chars != 0 && chars < 2) - { - throw base64_parse_error(); - } - while(chars != 0) - { - bits <<= 6; - padding++; - chars++; - if(chars == 4) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); - if(padding < 2) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); - } - if(padding < 1) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); - } - bits = 0; - chars = 0; - padding = 0; - } - } - return result; + return mpt::decode_base64url(src); } - - -static constexpr mpt::uchar base64[64] = { - UC_('A'),UC_('B'),UC_('C'),UC_('D'),UC_('E'),UC_('F'),UC_('G'),UC_('H'),UC_('I'),UC_('J'),UC_('K'),UC_('L'),UC_('M'),UC_('N'),UC_('O'),UC_('P'), - UC_('Q'),UC_('R'),UC_('S'),UC_('T'),UC_('U'),UC_('V'),UC_('W'),UC_('X'),UC_('Y'),UC_('Z'),UC_('a'),UC_('b'),UC_('c'),UC_('d'),UC_('e'),UC_('f'), - UC_('g'),UC_('h'),UC_('i'),UC_('j'),UC_('k'),UC_('l'),UC_('m'),UC_('n'),UC_('o'),UC_('p'),UC_('q'),UC_('r'),UC_('s'),UC_('t'),UC_('u'),UC_('v'), - UC_('w'),UC_('x'),UC_('y'),UC_('z'),UC_('0'),UC_('1'),UC_('2'),UC_('3'),UC_('4'),UC_('5'),UC_('6'),UC_('7'),UC_('8'),UC_('9'),UC_('+'),UC_('/') -}; - mpt::ustring BinToBase64(mpt::const_byte_span src) { - mpt::ustring result; - result.reserve(4 * ((src.size() + 2) / 3)); - uint32 bits = 0; - std::size_t bytes = 0; - for(std::byte byte : src) - { - bits <<= 8; - bits |= mpt::byte_cast(byte); - bytes++; - if(bytes == 3) - { - result.push_back(base64[(bits >> 18) & 0x3f]); - result.push_back(base64[(bits >> 12) & 0x3f]); - result.push_back(base64[(bits >> 6) & 0x3f]); - result.push_back(base64[(bits >> 0) & 0x3f]); - bits = 0; - bytes = 0; - } - } - std::size_t padding = 0; - while(bytes != 0) - { - bits <<= 8; - padding++; - bytes++; - if(bytes == 3) - { - result.push_back(base64[(bits >> 18) & 0x3f]); - result.push_back(base64[(bits >> 12) & 0x3f]); - if(padding > 1) - { - result.push_back(UC_('=')); - } else - { - result.push_back(base64[(bits >> 6) & 0x3f]); - } - if(padding > 0) - { - result.push_back(UC_('=')); - } else - { - result.push_back(base64[(bits >> 0) & 0x3f]); - } - bits = 0; - bytes = 0; - } - } - return result; + return mpt::encode_base64(src); } -static uint8 GetBase64Bits(mpt::uchar c) -{ - for(uint8 i = 0; i < 64; ++i) - { - if(base64[i] == c) - { - return i; - } - } - throw base64_parse_error(); -} - std::vector Base64ToBin(const mpt::ustring &src) { - std::vector result; - result.reserve(3 * (src.length() / 4)); - uint32 bits = 0; - std::size_t chars = 0; - std::size_t padding = 0; - for(mpt::uchar c : src) - { - bits <<= 6; - if(c == UC_('=')) - { - padding++; - } else - { - bits |= GetBase64Bits(c); - } - chars++; - if(chars == 4) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); - if(padding < 2) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); - } - if(padding < 1) - { - result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); - } - bits = 0; - chars = 0; - padding = 0; - } - } - if(chars != 0) - { - throw base64_parse_error(); - } - return result; + return mpt::decode_base64(src); } - } // namespace Util - -#if defined(MODPLUG_TRACKER) || (defined(LIBOPENMPT_BUILD) && defined(LIBOPENMPT_BUILD_TEST)) - -namespace mpt -{ - -std::optional getenv(const mpt::ustring &env_var) -{ - #if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT - MPT_UNREFERENCED_PARAMETER(env_var); - return std::nullopt; - #elif MPT_OS_WINDOWS && defined(UNICODE) - std::vector buf(32767); - DWORD size = GetEnvironmentVariable(mpt::ToWide(env_var).c_str(), buf.data(), 32767); - if(size == 0) - { - mpt::Windows::ExpectError(ERROR_ENVVAR_NOT_FOUND); - return std::nullopt; - } - return mpt::ToUnicode(buf.data()); - #else - const char *val = std::getenv(mpt::ToCharset(mpt::CharsetEnvironment, env_var).c_str()); - if(!val) - { - return std::nullopt; - } - return mpt::ToUnicode(mpt::CharsetEnvironment, val); - #endif -} - -} // namespace mpt - -#endif // MODPLUG_TRACKER || (LIBOPENMPT_BUILD && LIBOPENMPT_BUILD_TEST) - - OPENMPT_NAMESPACE_END Index: common/misc_util.h =================================================================== --- common/misc_util.h (revision 14776) +++ common/misc_util.h (working copy) @@ -38,12 +38,16 @@ #include + OPENMPT_NAMESPACE_BEGIN + namespace Util { + + // Insert a range of items [insStart, insEnd], and possibly shift item fix to the left. template void InsertItem(const T insStart, const T insEnd, T &fix) @@ -109,13 +113,8 @@ } } -} // namespace Util - -namespace Util -{ - template class fixed_size_queue { @@ -202,75 +201,52 @@ } }; -} // namespace Util -namespace Util -{ + std::vector HexToBin(const mpt::ustring &src); + mpt::ustring BinToHex(mpt::const_byte_span src); + template inline mpt::ustring BinToHex(mpt::span src) { return Util::BinToHex(mpt::byte_cast(src)); } -std::vector HexToBin(const mpt::ustring &src); -mpt::ustring BinToHex(mpt::const_byte_span src); -template inline mpt::ustring BinToHex(mpt::span src) { return Util::BinToHex(mpt::byte_cast(src)); } + using base64_parse_error = std::runtime_error; -class base64_parse_error : public std::runtime_error -{ -public: - base64_parse_error() - : std::runtime_error("invalid Base64 encoding") - { - } -}; + std::vector Base64ToBin(const mpt::ustring &src); + mpt::ustring BinToBase64(mpt::const_byte_span src); + template inline mpt::ustring BinToBase64(mpt::span src) { return Util::BinToBase64(mpt::byte_cast(src)); } -std::vector Base64ToBin(const mpt::ustring &src); -mpt::ustring BinToBase64(mpt::const_byte_span src); -template inline mpt::ustring BinToBase64(mpt::span src) { return Util::BinToBase64(mpt::byte_cast(src)); } + std::vector Base64urlToBin(const mpt::ustring &src); + mpt::ustring BinToBase64url(mpt::const_byte_span src); + template inline mpt::ustring BinToBase64url(mpt::span src) { return Util::BinToBase64url(mpt::byte_cast(src)); } -std::vector Base64urlToBin(const mpt::ustring &src); -mpt::ustring BinToBase64url(mpt::const_byte_span src); -template inline mpt::ustring BinToBase64url(mpt::span src) { return Util::BinToBase64url(mpt::byte_cast(src)); } -} // namespace Util -namespace Util -{ - -template -class heap_value -{ -private: - std::unique_ptr m_value{}; -public: - template - heap_value(Targs && ... args) - : m_value(std::make_unique(std::forward(args) ...)) + template + class heap_value { - return; - } - const T & value() const - { - return *m_value; - } - T & value() - { - return *m_value; - } -}; + private: + std::unique_ptr m_value{}; + public: + template + heap_value(Targs && ... args) + : m_value(std::make_unique(std::forward(args) ...)) + { + return; + } + const T & value() const + { + return *m_value; + } + T & value() + { + return *m_value; + } + }; -} // namespace Util -#if defined(MODPLUG_TRACKER) || (defined(LIBOPENMPT_BUILD) && defined(LIBOPENMPT_BUILD_TEST)) -namespace mpt -{ +} // namespace Util -// Wrapper around std::getenv. -std::optional getenv(const mpt::ustring &env_var); -} // namespace mpt -#endif // MODPLUG_TRACKER || (LIBOPENMPT_BUILD && LIBOPENMPT_BUILD_TEST) - - #if MPT_OS_WINDOWS template Index: common/mptAlloc.h =================================================================== --- common/mptAlloc.h (revision 14776) +++ common/mptAlloc.h (working copy) @@ -14,6 +14,8 @@ +#include "mpt/base/alloc.hpp" + #include "mptBaseMacros.h" #include "mptMemory.h" #include "mptSpan.h" @@ -34,108 +36,6 @@ OPENMPT_NAMESPACE_BEGIN - -namespace mpt { - - - -template inline mpt::span as_span(std::vector & cont) -{ - return mpt::span(cont.data(), cont.data() + cont.size()); -} - -template inline mpt::span as_span(const std::vector & cont) -{ - return mpt::span(cont.data(), cont.data() + cont.size()); -} - - - -template inline std::vector::type> make_vector(T * beg, T * end) -{ - return std::vector::type>(beg, end); -} - -template inline std::vector::type> make_vector(T * data, std::size_t size) -{ - return std::vector::type>(data, data + size); -} - -template inline std::vector::type> make_vector(mpt::span data) -{ - return std::vector::type>(data.data(), data.data() + data.size()); -} - -template inline std::vector::type> make_vector(T (&arr)[N]) -{ - return std::vector::type>(std::begin(arr), std::end(arr)); -} - - - -template inline Tcont1 & append(Tcont1 & cont1, const Tcont2 & cont2) -{ - cont1.insert(cont1.end(), cont2.begin(), cont2.end()); - return cont1; -} - -template inline Tcont1 & append(Tcont1 & cont1, Tit2 beg, Tit2 end) -{ - cont1.insert(cont1.end(), beg, end); - return cont1; -} - - - -template -struct buffer_cast_impl -{ - inline Tdst operator () (const Tsrc &src) const - { - return Tdst(mpt::byte_cast(src.data()), mpt::byte_cast(src.data()) + src.size()); - } -}; - -// casts between vector<->string of byte-castable types -template -inline Tdst buffer_cast(Tsrc src) -{ - return buffer_cast_impl()(src); -} - - - -template -struct GetRawBytesFunctor> -{ - inline mpt::const_byte_span operator () (const std::vector & v) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); - } - inline mpt::byte_span operator () (std::vector & v) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); - } -}; - -template -struct GetRawBytesFunctor> -{ - inline mpt::const_byte_span operator () (const std::vector & v) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); - } -}; - - - -} // namespace mpt - - - #if defined(MPT_ENABLE_ALIGNED_ALLOC) Index: common/mptBaseMacros.h =================================================================== --- common/mptBaseMacros.h (revision 14776) +++ common/mptBaseMacros.h (working copy) @@ -12,8 +12,10 @@ #include "BuildSettings.h" +#include "mpt/base/preprocessor.hpp" +#include "mpt/base/compiletime_warning.hpp" +#include "mpt/base/macros.hpp" - #if MPT_CXX_AT_LEAST(20) #include #else // !C++20 @@ -31,155 +33,20 @@ #include - OPENMPT_NAMESPACE_BEGIN -#define MPT_PP_DEFER(m, ...) m(__VA_ARGS__) - -#define MPT_PP_STRINGIFY(x) #x - -#define MPT_PP_JOIN_HELPER(a, b) a ## b -#define MPT_PP_JOIN(a, b) MPT_PP_JOIN_HELPER(a, b) - -#define MPT_PP_UNIQUE_IDENTIFIER(prefix) MPT_PP_JOIN(prefix , __LINE__) - - - -#if MPT_COMPILER_MSVC - -#define MPT_WARNING(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) -#define MPT_WARNING_STATEMENT(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) - -#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG - -#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) -#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) - -#else - -// portable #pragma message or #warning replacement -#define MPT_WARNING(text) \ - static inline int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) () noexcept { \ - int warning [[deprecated("Warning: " text)]] = 0; \ - return warning; \ - } \ -/**/ -#define MPT_WARNING_STATEMENT(text) \ - int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) = [](){ \ - int warning [[deprecated("Warning: " text)]] = 0; \ - return warning; \ - }() \ -/**/ - -#endif - - - -// Advanced inline attributes -#if MPT_COMPILER_MSVC -#define MPT_FORCEINLINE __forceinline -#define MPT_NOINLINE __declspec(noinline) -#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG -#define MPT_FORCEINLINE __attribute__((always_inline)) inline -#define MPT_NOINLINE __attribute__((noinline)) -#else -#define MPT_FORCEINLINE inline -#define MPT_NOINLINE -#endif - - - -// constexpr #define MPT_CONSTEXPRINLINE constexpr MPT_FORCEINLINE -#if MPT_CXX_AT_LEAST(20) -#define MPT_CONSTEXPR20_FUN constexpr MPT_FORCEINLINE -#define MPT_CONSTEXPR20_VAR constexpr -#else // !C++20 -#define MPT_CONSTEXPR20_FUN MPT_FORCEINLINE -#define MPT_CONSTEXPR20_VAR const -#endif // C++20 -#define MPT_FORCE_CONSTEXPR(expr) [&]() { \ - constexpr auto x = (expr); \ - return x; \ -}() +#define MPT_UNREFERENCED_PARAMETER(x) MPT_UNUSED(x) +#define MPT_UNUSED_VARIABLE(x) MPT_UNUSED(x) -#if MPT_CXX_AT_LEAST(20) -#define MPT_IS_CONSTANT_EVALUATED20() std::is_constant_evaluated() -#define MPT_IS_CONSTANT_EVALUATED() std::is_constant_evaluated() -#else // !C++20 -#define MPT_IS_CONSTANT_EVALUATED20() false -#define MPT_IS_CONSTANT_EVALUATED() true // this pessimizes the case for C++17 by always assuming constexpr context, which implies always running constexpr-friendly code -#endif // C++20 - - - -// Use MPT_RESTRICT to indicate that a pointer is guaranteed to not be aliased. -#if MPT_COMPILER_MSVC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG -#define MPT_RESTRICT __restrict -#else -#define MPT_RESTRICT -#endif - - - -#define MPT_DISCARD(expr) static_cast(expr) - - - #if MPT_COMPILER_MSVC -#define MPT_MAYBE_CONSTANT_IF(x) \ - __pragma(warning(push)) \ - __pragma(warning(disable:4127)) \ - if(x) \ - __pragma(warning(pop)) \ -/**/ -#endif - -#if MPT_COMPILER_GCC -#define MPT_MAYBE_CONSTANT_IF(x) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ - if(x) \ - _Pragma("GCC diagnostic pop") \ -/**/ -#endif - -#if MPT_COMPILER_CLANG -#define MPT_MAYBE_CONSTANT_IF(x) \ - _Pragma("clang diagnostic push") \ - _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \ - _Pragma("clang diagnostic ignored \"-Wtype-limits\"") \ - _Pragma("clang diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \ - if(x) \ - _Pragma("clang diagnostic pop") \ -/**/ -#endif - -#if !defined(MPT_MAYBE_CONSTANT_IF) -// MPT_MAYBE_CONSTANT_IF disables compiler warnings for conditions that may in some case be either always false or always true (this may turn out to be useful in ASSERTions in some cases). -#define MPT_MAYBE_CONSTANT_IF(x) if(x) -#endif - - - -#if MPT_COMPILER_MSVC && defined(UNREFERENCED_PARAMETER) -#define MPT_UNREFERENCED_PARAMETER(x) UNREFERENCED_PARAMETER(x) -#else -#define MPT_UNREFERENCED_PARAMETER(x) (void)(x) -#endif - -#define MPT_UNUSED_VARIABLE(x) MPT_UNREFERENCED_PARAMETER(x) - - - -#if MPT_COMPILER_MSVC // warning LNK4221: no public symbols found; archive member will be inaccessible // There is no way to selectively disable linker warnings. // #pragma warning does not apply and a command line option does not exist. Index: common/mptBaseTypes.h =================================================================== --- common/mptBaseTypes.h (revision 14776) +++ common/mptBaseTypes.h (working copy) @@ -13,14 +13,16 @@ #include "BuildSettings.h" +#include "mpt/base/integer.hpp" +#include "mpt/base/floatingpoint.hpp" +#include "mpt/base/pointer.hpp" +#include "mpt/base/check_platform.hpp" +#include "mpt/base/source_location.hpp" #include "mptBaseMacros.h" #include #include -#if MPT_CXX_AT_LEAST(20) -#include -#endif // C++20 #include #include @@ -33,16 +35,15 @@ OPENMPT_NAMESPACE_BEGIN +using int8 = mpt::int8; +using int16 = mpt::int16; +using int32 = mpt::int32; +using int64 = mpt::int64; +using uint8 = mpt::uint8; +using uint16 = mpt::uint16; +using uint32 = mpt::uint32; +using uint64 = mpt::uint64; -using int8 = std::int8_t; -using int16 = std::int16_t; -using int32 = std::int32_t; -using int64 = std::int64_t; -using uint8 = std::uint8_t; -using uint16 = std::uint16_t; -using uint32 = std::uint32_t; -using uint64 = std::uint64_t; - constexpr inline int8 int8_min = std::numeric_limits::min(); constexpr inline int16 int16_min = std::numeric_limits::min(); constexpr inline int32 int32_min = std::numeric_limits::min(); @@ -60,236 +61,11 @@ -// fp half -// n/a +using nativefloat = mpt::nativefloat; +using float32 = mpt::float32; +using float64 = mpt::float64; +using namespace mpt::float_literals; -// fp single -using single = float; -constexpr single operator"" _fs(long double lit) noexcept -{ - return static_cast(lit); -} -// fp double -constexpr double operator"" _fd(long double lit) noexcept -{ - return static_cast(lit); -} -// fp extended -constexpr long double operator"" _fe(long double lit) noexcept -{ - return static_cast(lit); -} - -// fp quad -// n/a - -using float32 = std::conditional::type - >::type - >::type; -constexpr float32 operator"" _f32(long double lit) noexcept -{ - return static_cast(lit); -} - -using float64 = std::conditional::type - >::type - >::type; -constexpr float64 operator"" _f64(long double lit) noexcept -{ - return static_cast(lit); -} - -namespace mpt -{ -template -struct float_traits -{ - static constexpr bool is_float = !std::numeric_limits::is_integer; - static constexpr bool is_hard = is_float && !MPT_COMPILER_QUIRK_FLOAT_EMULATED; - static constexpr bool is_soft = is_float && MPT_COMPILER_QUIRK_FLOAT_EMULATED; - static constexpr bool is_float32 = is_float && (sizeof(T) == 4); - static constexpr bool is_float64 = is_float && (sizeof(T) == 8); - static constexpr bool is_native_endian = is_float && !MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN; - static constexpr bool is_ieee754_binary = is_float && std::numeric_limits::is_iec559 && !MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754; - static constexpr bool is_ieee754_binary32 = is_float && is_ieee754_binary && is_float32; - static constexpr bool is_ieee754_binary64 = is_float && is_ieee754_binary && is_float64; - static constexpr bool is_ieee754_binary32ne = is_float && is_ieee754_binary && is_float32 && is_native_endian; - static constexpr bool is_ieee754_binary64ne = is_float && is_ieee754_binary && is_float64 && is_native_endian; - static constexpr bool is_preferred = is_float && ((is_float32 && MPT_COMPILER_QUIRK_FLOAT_PREFER32) || (is_float64 && MPT_COMPILER_QUIRK_FLOAT_PREFER64)); -}; -} // namespace mpt - -// prefer smaller floats, but try to use IEEE754 floats -using nativefloat = - std::conditional::is_preferred, - float32 - , - std::conditional::is_preferred, - float64 - , - std::conditional::is_iec559, - float - , - std::conditional::is_iec559, - double - , - std::conditional::is_iec559, - long double - , - float - >::type - >::type - >::type - >::type - >::type; -constexpr nativefloat operator"" _nf(long double lit) noexcept -{ - return static_cast(lit); -} - - - -static_assert(sizeof(std::uintptr_t) == sizeof(void*)); - - - -static_assert(std::numeric_limits::digits == 8); - -static_assert(sizeof(char) == 1); - -static_assert(sizeof(std::byte) == 1); -static_assert(alignof(std::byte) == 1); - - -namespace mpt { -inline constexpr int arch_bits = sizeof(void*) * 8; -inline constexpr std::size_t pointer_size = sizeof(void*); -} // namespace mpt - -static_assert(mpt::arch_bits == static_cast(mpt::pointer_size) * 8); - - - -namespace mpt -{ - -#if MPT_CXX_AT_LEAST(20) - -using std::source_location; - -#define MPT_SOURCE_LOCATION_CURRENT() std::source_location::current() - -#else // !C++20 - -#if MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019,6) - -#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() -#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() -#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() -#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() - -#elif MPT_COMPILER_GCC - -#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() -#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() -#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() -#define MPT_SOURCE_LOCATION_COLUMN 0 - -#elif MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9,0,0) - -#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() -#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() -#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() -#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() - -#else - -#define MPT_SOURCE_LOCATION_FILE __FILE__ -#define MPT_SOURCE_LOCATION_FUNCTION "" -#define MPT_SOURCE_LOCATION_LINE __LINE__ -#define MPT_SOURCE_LOCATION_COLUMN 0 - -#endif - -// compatible with std::experimental::source_location from Library Fundamentals TS v2. -struct source_location -{ -private: - const char* m_file_name; - const char* m_function_name; - uint32 m_line; - uint32 m_column; -public: - constexpr source_location() noexcept - : m_file_name("") - , m_function_name("") - , m_line(0) - , m_column(0) - { - } - constexpr source_location(const char* file, const char* function, uint32 line, uint32 column) noexcept - : m_file_name(file) - , m_function_name(function) - , m_line(line) - , m_column(column) - { - } - source_location(const source_location&) = default; - source_location(source_location&&) = default; - static constexpr source_location current(const char * file = MPT_SOURCE_LOCATION_FILE, const char * function = MPT_SOURCE_LOCATION_FUNCTION, uint32 line = MPT_SOURCE_LOCATION_LINE, uint32 column = MPT_SOURCE_LOCATION_COLUMN) noexcept - { - return source_location(file, function, line, column); - } - constexpr uint32 line() const noexcept - { - return m_line; - } - constexpr uint32 column() const noexcept - { - return m_column; - } - constexpr const char* file_name() const noexcept - { - return m_file_name; - } - constexpr const char* function_name() const noexcept - { - return m_function_name; - } -}; - -#if (MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019,6)) || MPT_COMPILER_GCC || (MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9,0,0)) -#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current() -#else -#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current( __FILE__ , __func__ , __LINE__ , 0 ) -#endif - -#endif // C++20 - -} // namespace mpt - - - OPENMPT_NAMESPACE_END Index: common/mptBaseUtils.h =================================================================== --- common/mptBaseUtils.h (revision 14776) +++ common/mptBaseUtils.h (working copy) @@ -13,13 +13,22 @@ #include "BuildSettings.h" +#include "mpt/base/algorithm.hpp" +#include "mpt/base/arithmetic_shift.hpp" +#include "mpt/base/array.hpp" +#include "mpt/base/bit.hpp" +#include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/math.hpp" +#include "mpt/base/numeric.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/base/saturate_round.hpp" +#include "mpt/base/utility.hpp" +#include "mpt/base/wrapping_divide.hpp" + #include "mptBaseMacros.h" #include "mptBaseTypes.h" #include -#if MPT_CXX_AT_LEAST(20) -#include -#endif #include #include #include @@ -52,512 +61,9 @@ #endif - -namespace mpt -{ - -template -struct stdarray_extent : std::integral_constant {}; - -template -struct stdarray_extent> : std::integral_constant {}; - -template -struct is_stdarray : std::false_type {}; - -template -struct is_stdarray> : std::true_type {}; - -// mpt::extent is the same as std::extent, -// but also works for std::array, -// and asserts that the given type is actually an array type instead of returning 0. -// use as: -// mpt::extent() -// mpt::extent() -// mpt::extent() -// mpt::extent() -template -constexpr std::size_t extent() noexcept -{ - using Tarray = typename std::remove_cv::type>::type; - static_assert(std::is_array::value || mpt::is_stdarray::value); - if constexpr(mpt::is_stdarray::value) - { - return mpt::stdarray_extent(); - } else - { - return std::extent(); - } -} - -template -struct array_size; - -template -struct array_size> -{ - static constexpr std::size_t size = N; -}; - -template -struct array_size -{ - static constexpr std::size_t size = N; -}; - -} // namespace mpt - - - -namespace mpt -{ - -template -constexpr std::array init_array(const Tx & x) -{ - std::array result{}; - for(std::size_t i = 0; i < N; ++i) - { - result[i] = x; - } - return result; -} - -} // namespace mpt - - - -namespace mpt -{ - -#if MPT_CXX_AT_LEAST(23) - -using std::to_underlying; - -#else // !C++23 - -template -constexpr std::underlying_type_t to_underlying(T value) noexcept -{ - return static_cast::type>(value); -} - -#endif // C++23 - -} // namespace mpt - - -namespace mpt -{ - -// Work-around for the requirement of at least 1 non-throwing function argument combination in C++ (17,2a). - -template -constexpr bool constexpr_throw_helper(Exception && e, bool really = true) -{ - //return !really ? really : throw std::forward(e); - if(really) - { - throw std::forward(e); - } - // cppcheck-suppress identicalConditionAfterEarlyExit - return really; -} -template -constexpr bool constexpr_throw(Exception && e) -{ - return mpt::constexpr_throw_helper(std::forward(e)); -} - -template -constexpr T constexpr_throw_helper(Exception && e, bool really = true) -{ - //return !really ? really : throw std::forward(e); - if(really) - { - throw std::forward(e); - } - return T{}; -} -template -constexpr T constexpr_throw(Exception && e) -{ - return mpt::constexpr_throw_helper(std::forward(e)); -} - -} // namespace mpt - - - -namespace mpt { - -// Modulo with more intuitive behaviour for some contexts: -// Instead of being symmetrical around 0, the pattern for positive numbers is repeated in the negative range. -// For example, wrapping_modulo(-1, m) == (m - 1). -// Behaviour is undefined if m<=0. -template -constexpr auto wrapping_modulo(T x, M m) -> decltype(x % m) -{ - return (x >= 0) ? (x % m) : (m - 1 - ((-1 - x) % m)); -} - -template -constexpr auto wrapping_divide(T x, D d) -> decltype(x / d) -{ - return (x >= 0) ? (x / d) : (((x + 1) / d) - 1); -} - -} // namespace mpt - - - -namespace mpt { - - - -// Saturate the value of src to the domain of Tdst -template -constexpr Tdst saturate_cast(Tsrc src) noexcept -{ - // This code tries not only to obviously avoid overflows but also to avoid signed/unsigned comparison warnings and type truncation warnings (which in fact would be safe here) by explicit casting. - static_assert(std::numeric_limits::is_integer); - static_assert(std::numeric_limits::is_integer); - if constexpr(std::numeric_limits::is_signed && std::numeric_limits::is_signed) - { - if constexpr(sizeof(Tdst) >= sizeof(Tsrc)) - { - return static_cast(src); - } else - { - return static_cast(std::max(static_cast(std::numeric_limits::min()), std::min(src, static_cast(std::numeric_limits::max())))); - } - } else if constexpr(!std::numeric_limits::is_signed && !std::numeric_limits::is_signed) - { - if constexpr(sizeof(Tdst) >= sizeof(Tsrc)) - { - return static_cast(src); - } else - { - return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); - } - } else if constexpr(std::numeric_limits::is_signed && !std::numeric_limits::is_signed) - { - if constexpr(sizeof(Tdst) > sizeof(Tsrc)) - { - return static_cast(src); - } else if constexpr(sizeof(Tdst) == sizeof(Tsrc)) - { - return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); - } else - { - return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); - } - } else // Tdst unsigned, Tsrc signed - { - if constexpr(sizeof(Tdst) >= sizeof(Tsrc)) - { - return static_cast(std::max(static_cast(0), src)); - } else - { - return static_cast(std::max(static_cast(0), std::min(src, static_cast(std::numeric_limits::max())))); - } - } -} - -template -constexpr Tdst saturate_cast(double src) -{ - if(src >= static_cast(std::numeric_limits::max())) - { - return std::numeric_limits::max(); - } - if(src <= static_cast(std::numeric_limits::min())) - { - return std::numeric_limits::min(); - } - return static_cast(src); -} - -template -constexpr Tdst saturate_cast(float src) -{ - if(src >= static_cast(std::numeric_limits::max())) - { - return std::numeric_limits::max(); - } - if(src <= static_cast(std::numeric_limits::min())) - { - return std::numeric_limits::min(); - } - return static_cast(src); -} - - -#if MPT_CXX_AT_LEAST(20) - -using std::popcount; -using std::has_single_bit; -using std::bit_ceil; -using std::bit_floor; -using std::bit_width; -using std::countl_zero; -using std::countl_one; -using std::countr_zero; -using std::countr_one; -using std::rotl; -using std::rotr; - -#else - -// C++20 header. -// Note that we do not use SFINAE here but instead rely on static_assert. - -template -constexpr int popcount(T val) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - int result = 0; - while(val > 0) - { - if(val & 0x1) - { - result++; - } - val >>= 1; - } - return result; -} - -template -constexpr bool has_single_bit(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - return mpt::popcount(x) == 1; -} - -template -constexpr T bit_ceil(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - T result = 1; - while(result < x) - { - T newresult = result << 1; - if(newresult < result) - { - return 0; - } - result = newresult; - } - return result; -} - -template -constexpr T bit_floor(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - if(x == 0) - { - return 0; - } - T result = 1; - do - { - T newresult = result << 1; - if(newresult < result) - { - return result; - } - result = newresult; - } while(result <= x); - return result >> 1; -} - -template -constexpr T bit_width(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - T result = 0; - while(x > 0) - { - x >>= 1; - result += 1; - } - return result; -} - -template -constexpr int countl_zero(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - int count = 0; - for(int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) - { - if((x & (1u< -constexpr int countl_one(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - int count = 0; - for(int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) - { - if((x & (1u< -constexpr int countr_zero(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - int count = 0; - for(int bit = 0; bit < std::numeric_limits::digits; ++bit) - { - if((x & (1u< -constexpr int countr_one(T x) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - int count = 0; - for(int bit = 0; bit < std::numeric_limits::digits; ++bit) - { - if((x & (1u< -constexpr T rotl(T x, int r) noexcept -{ - auto N = std::numeric_limits::digits; - return (x >> (N - r)) | (x << r); -} - -template -constexpr T rotr(T x, int r) noexcept -{ - auto N = std::numeric_limits::digits; - return (x << (N - r)) | (x >> r); -} - -} // namespace detail - -template -constexpr T rotl(T x, int s) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - auto N = std::numeric_limits::digits; - auto r = s % N; - return (s < 0) ? detail::rotr(x, -s) : ((x >> (N - r)) | (x << r)); -} - -template -constexpr T rotr(T x, int s) noexcept -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::is_unsigned::value); - auto N = std::numeric_limits::digits; - auto r = s % N; - return (s < 0) ? detail::rotl(x, -s) : ((x << (N - r)) | (x >> r)); -} - -#endif - -#if MPT_CXX_AT_LEAST(20) - -using std::in_range; - -#else - -// Returns true iff Tdst can represent the value val. -// Use as if(mpt::in_range(-1)). -template -constexpr bool in_range(Tsrc val) -{ - return (static_cast(mpt::saturate_cast(val)) == val); -} - -#endif - -} // namespace mpt - - namespace Util { -namespace detail -{ -template -struct ModIfNotZeroImpl -{ - template - constexpr Tval mod(Tval x) - { - static_assert(std::numeric_limits::is_integer); - static_assert(!std::numeric_limits::is_signed); - static_assert(std::numeric_limits::is_integer); - static_assert(!std::numeric_limits::is_signed); - return static_cast(x % m); - } -}; -template <> struct ModIfNotZeroImpl { template constexpr Tval mod(Tval x) { return x; } }; -template <> struct ModIfNotZeroImpl { template constexpr Tval mod(Tval x) { return x; } }; -template <> struct ModIfNotZeroImpl { template constexpr Tval mod(Tval x) { return x; } }; -template <> struct ModIfNotZeroImpl { template constexpr Tval mod(Tval x) { return x; } }; -} // namespace detail -// Returns x % m if m != 0, x otherwise. -// i.e. "return (m == 0) ? x : (x % m);", but without causing a warning with stupid older compilers -template -constexpr Tval ModIfNotZero(Tval x) -{ - return detail::ModIfNotZeroImpl().mod(x); -} - // Grows x with an exponential factor suitable for increasing buffer sizes. // Clamps the result at limit. // And avoids integer overflows while doing its business. @@ -567,12 +73,7 @@ { MPT_ASSERT(x > 0); MPT_ASSERT(limit > 0); - if(x == 1) - { - return 2; - } - T add = std::min(x >> 1, std::numeric_limits::max() - x); - return std::min(x + add, mpt::saturate_cast(limit)); + return mpt::exponential_grow(x, limit); } template @@ -611,7 +112,7 @@ template inline bool IsInRange(T val, C lo, C hi) { - return lo <= val && val <= hi; + return mpt::is_in_range(val, lo, hi); } // Like Limit, but with upperlimit only. @@ -632,96 +133,6 @@ -// mpt::rshift_signed -// mpt::lshift_signed -// Shift a signed integer value in a well-defined manner. -// Does the same thing as MSVC would do. This is verified by the test suite. - -namespace mpt -{ - -template -constexpr auto rshift_signed_standard(T x, int y) noexcept -> decltype(x >> y) -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::numeric_limits::is_signed); - typedef decltype(x >> y) result_type; - typedef typename std::make_unsigned::type unsigned_result_type; - const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); - result_type rx = x; - unsigned_result_type urx = static_cast(rx); - urx += roffset; - urx >>= y; - urx -= roffset >> y; - return static_cast(urx); -} - -template -constexpr auto lshift_signed_standard(T x, int y) noexcept -> decltype(x << y) -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::numeric_limits::is_signed); - typedef decltype(x << y) result_type; - typedef typename std::make_unsigned::type unsigned_result_type; - const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); - result_type rx = x; - unsigned_result_type urx = static_cast(rx); - urx += roffset; - urx <<= y; - urx -= roffset << y; - return static_cast(urx); -} - -#if MPT_COMPILER_SHIFT_SIGNED - -template -constexpr auto rshift_signed_undefined(T x, int y) noexcept -> decltype(x >> y) -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::numeric_limits::is_signed); - return x >> y; -} - -template -constexpr auto lshift_signed_undefined(T x, int y) noexcept -> decltype(x << y) -{ - static_assert(std::numeric_limits::is_integer); - static_assert(std::numeric_limits::is_signed); - return x << y; -} - -template -constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) -{ - return mpt::rshift_signed_undefined(x, y); -} - -template -constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) -{ - return mpt::lshift_signed_undefined(x, y); -} - -#else - -template -constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) -{ - return mpt::rshift_signed_standard(x, y); -} - -template -constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) -{ - return mpt::lshift_signed_standard(x, y); -} - -#endif - -} // namespace mpt - - - namespace Util { @@ -730,39 +141,8 @@ } // namespace Util -namespace mpt -{ -#if MPT_OS_DJGPP - inline double round(const double& val) { return ::round(val); } - inline float round(const float& val) { return ::roundf(val); } - -#else // !MPT_OS_DJGPP - - // C++11 std::round - using std::round; - -#endif // MPT_OS_DJGPP - - - // Rounds given double value to nearest integer value of type T. - // Out-of-range values are saturated to the specified integer type's limits. - template inline T saturate_round(double val) - { - static_assert(std::numeric_limits::is_integer == true, "Type is a not an integer"); - return mpt::saturate_cast(mpt::round(val)); - } - - template inline T saturate_round(float val) - { - static_assert(std::numeric_limits::is_integer == true, "Type is a not an integer"); - return mpt::saturate_cast(mpt::round(val)); - } - -} - - namespace Util { // Multiply two 32-bit integers, receive 64-bit result. @@ -828,7 +208,7 @@ template constexpr T AlignUp(T x, T target) { - return ((x + (target - 1)) / target) * target; + return mpt::align_up(x, target); } // rounds x down to multiples of target @@ -835,22 +215,11 @@ template constexpr T AlignDown(T x, T target) { - return (x / target) * target; + return mpt::align_down(x, target); } } // namespace Util -namespace mpt -{ -template -MPT_CONSTEXPR20_FUN bool contains(const TContainer &container, const TVal &value) noexcept(noexcept(std::find(std::begin(container), std::end(container), value))) -{ - return std::find(std::begin(container), std::end(container), value) != std::end(container); -} - -} // namespace mpt - - OPENMPT_NAMESPACE_END Index: common/mptCRC.h =================================================================== --- common/mptCRC.h (revision 14776) +++ common/mptCRC.h (working copy) @@ -11,235 +11,4 @@ #include "BuildSettings.h" -#include - -OPENMPT_NAMESPACE_BEGIN - -namespace mpt -{ - -namespace checksum -{ - -template -class crc -{ - -public: - - typedef crc self_type; - typedef T value_type; - typedef uint8 byte_type; - - static constexpr std::size_t size_bytes = sizeof(value_type); - static constexpr std::size_t size_bits = sizeof(value_type) * 8; - static constexpr value_type top_bit = static_cast(1) << ((sizeof(value_type) * 8) - 1); - -private: - - template - static constexpr Tint reverse(Tint value) noexcept - { - const std::size_t bits = sizeof(Tint) * 8; - Tint result = 0; - for(std::size_t i = 0; i < bits; ++i) - { - result <<= 1; - result |= static_cast(value & 0x1); - value >>= 1; - } - return result; - } - - static constexpr value_type calculate_table_entry(byte_type pos) noexcept - { - value_type value = 0; - value = (static_cast(reverseData ? reverse(pos) : pos) << (size_bits - 8)); - for(std::size_t bit = 0; bit < 8; ++bit) - { - if(value & top_bit) - { - value = (value << 1) ^ polynomial; - } else - { - value = (value << 1); - } - } - value = (reverseData ? reverse(value) : value); - return value; - } - -private: - - static constexpr std::array calculate_table() noexcept - { - std::array t = mpt::init_array(value_type{}); - for(std::size_t i = 0; i < 256; ++i) - { - t[i] = calculate_table_entry(static_cast(i)); - } - return t; - } - - static constexpr std::array table = calculate_table(); - -private: - - constexpr value_type read_table(byte_type pos) const noexcept - { - return table[pos]; - } - -private: - - value_type value; - -public: - - constexpr crc() noexcept - : value(initial) - { - return; - } - - constexpr void processByte(byte_type byte) noexcept - { - if constexpr(reverseData) - { - value = (value >> 8) ^ read_table(static_cast((value & 0xff) ^ byte)); - } else - { - value = (value << 8) ^ read_table(static_cast(((value >> (size_bits - 8)) & 0xff) ^ byte)); - } - } - - constexpr value_type result() const noexcept - { - return (value ^ resultXOR); - } - -public: - - constexpr operator value_type () const noexcept - { - return result(); - } - - inline crc & process(char c) noexcept - { - processByte(mpt::byte_cast(c)); - return *this; - } - - inline crc & process(signed char c) noexcept - { - processByte(static_cast(c)); - return *this; - } - - inline crc & process(unsigned char c) noexcept - { - processByte(mpt::byte_cast(c)); - return *this; - } - - inline crc & process(std::byte c) noexcept - { - processByte(mpt::byte_cast(c)); - return *this; - } - - template - inline crc & process(InputIt beg, InputIt end) - { - for(InputIt it = beg; it != end; ++it) - { - static_assert(sizeof(*it) == 1, "1 byte type required"); - process(*it); - } - return *this; - } - - template - inline crc & process(const Container &data) - { - operator () (data.begin(), data.end()); - return *this; - } - - inline crc & operator () (char c) noexcept - { - processByte(mpt::byte_cast(c)); - return *this; - } - - inline crc & operator () (signed char c) noexcept - { - processByte(static_cast(c)); - return *this; - } - - inline crc & operator () (unsigned char c) noexcept - { - processByte(mpt::byte_cast(c)); - return *this; - } - - inline crc & operator () (std::byte c) noexcept - { - processByte(mpt::byte_cast(c)); - return *this; - } - - template - crc & operator () (InputIt beg, InputIt end) - { - for(InputIt it = beg; it != end; ++it) - { - static_assert(sizeof(*it) == 1, "1 byte type required"); - operator () (*it); - } - return *this; - } - - template - inline crc & operator () (const Container &data) - { - operator () (data.begin(), data.end()); - return *this; - } - - template - crc(InputIt beg, InputIt end) - : value(initial) - { - for(InputIt it = beg; it != end; ++it) - { - static_assert(sizeof(*it) == 1, "1 byte type required"); - process(*it); - } - } - - template - inline crc(const Container &data) - : value(initial) - { - process(data.begin(), data.end()); - } - -}; - -typedef crc crc16; -typedef crc crc32; -typedef crc crc32_ogg; -typedef crc crc32c; -typedef crc crc64_jones; - -} // namespace checksum - -using mpt::checksum::crc32; -using mpt::checksum::crc32_ogg; - -} // namespace mpt - -OPENMPT_NAMESPACE_END +#include "mpt/crc/crc.hpp" Index: common/mptException.h =================================================================== --- common/mptException.h (revision 14776) +++ common/mptException.h (working copy) @@ -7,85 +7,8 @@ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ - #pragma once #include "BuildSettings.h" - - -#include "mptBaseMacros.h" - -#include -#if !defined(MPT_WITH_MFC) -#include -#endif // !MPT_WITH_MFC - -#if defined(MPT_WITH_MFC) -// cppcheck-suppress missingInclude -#include -#endif // MPT_WITH_MFC - - - -OPENMPT_NAMESPACE_BEGIN - - - -// Exception handling helpers, because MFC requires explicit deletion of the exception object, -// Thus, always call exactly one of mpt::rethrow_out_of_memory(e) or mpt::delete_out_of_memory(e). - -namespace mpt -{ - -#if defined(MPT_WITH_MFC) - -using out_of_memory = CMemoryException *; - -[[noreturn]] inline void throw_out_of_memory() -{ - AfxThrowMemoryException(); -} - -[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) -{ - MPT_UNREFERENCED_PARAMETER(e); - throw; -} - -inline void delete_out_of_memory(out_of_memory & e) -{ - if(e) - { - e->Delete(); - e = nullptr; - } -} - -#else // !MPT_WITH_MFC - -using out_of_memory = const std::bad_alloc &; - -[[noreturn]] inline void throw_out_of_memory() -{ - throw std::bad_alloc(); -} - -[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) -{ - MPT_UNREFERENCED_PARAMETER(e); - throw; -} - -inline void delete_out_of_memory(out_of_memory e) -{ - MPT_UNREFERENCED_PARAMETER(e); -} - -#endif // MPT_WITH_MFC - -} // namespace mpt - - - -OPENMPT_NAMESPACE_END +#include "mpt/out_of_memory/out_of_memory.hpp" Index: common/mptExceptionText.h =================================================================== --- common/mptExceptionText.h (revision 14776) +++ common/mptExceptionText.h (working copy) @@ -7,126 +7,8 @@ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ - #pragma once #include "BuildSettings.h" - - -#include "mptException.h" -#include "mptString.h" - -#include - - - -OPENMPT_NAMESPACE_BEGIN - - - -namespace mpt -{ - - - -template T get_exception_text_impl(const std::exception & e) -{ - if(e.what() && (std::strlen(e.what()) > 0)) - { - return T(e.what()); - } else if(typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) - { - return T(typeid(e).name()); - } else - { - return T("unknown exception name"); - } -} - -template inline T get_exception_text(const std::exception & e) -{ - return mpt::get_exception_text_impl(e); -} -template <> inline std::string get_exception_text(const std::exception & e) -{ - return mpt::get_exception_text_impl(e); -} -#if defined(MPT_ENABLE_CHARSET_LOCALE) -template <> inline mpt::lstring get_exception_text(const std::exception & e) -{ - return mpt::ToLocale(mpt::CharsetException, mpt::get_exception_text_impl(e)); -} -#endif -#if MPT_WSTRING_FORMAT -template <> inline std::wstring get_exception_text(const std::exception & e) -{ - return mpt::ToWide(mpt::CharsetException, mpt::get_exception_text_impl(e)); -} -#endif -#if MPT_USTRING_MODE_UTF8 -template <> inline mpt::ustring get_exception_text(const std::exception & e) -{ - return mpt::ToUnicode(mpt::CharsetException, mpt::get_exception_text_impl(e)); -} -#endif - - - -template T get_current_exception_text_impl() -{ - try - { - throw; - } catch(const std::exception &e) - { - if(e.what() && (std::strlen(e.what()) > 0)) - { - return T(e.what()); - } else if(typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) - { - return T(typeid(e).name()); - } else - { - return T("unknown exception name"); - } - } catch(...) - { - return T("unknown exception"); - } -} - -template inline T get_current_exception_text() -{ - return mpt::get_current_exception_text_impl(); -} -template <> inline std::string get_current_exception_text() -{ - return mpt::get_current_exception_text_impl(); -} -#if defined(MPT_ENABLE_CHARSET_LOCALE) -template <> inline mpt::lstring get_current_exception_text() -{ - return mpt::ToLocale(mpt::CharsetException, mpt::get_current_exception_text_impl()); -} -#endif -#if MPT_WSTRING_FORMAT -template <> inline std::wstring get_current_exception_text() -{ - return mpt::ToWide(mpt::CharsetException, mpt::get_current_exception_text_impl()); -} -#endif -#if MPT_USTRING_MODE_UTF8 -template <> inline mpt::ustring get_current_exception_text() -{ - return mpt::ToUnicode(mpt::CharsetException, mpt::get_current_exception_text_impl()); -} -#endif - - - -} // namespace mpt - - - -OPENMPT_NAMESPACE_END +#include "mpt/exception_text/exception_text.hpp" Index: common/mptMemory.h =================================================================== --- common/mptMemory.h (revision 14776) +++ common/mptMemory.h (working copy) @@ -13,13 +13,13 @@ #include "BuildSettings.h" +#include "mpt/base/bit.hpp" +#include "mpt/base/memory.hpp" + #include "mptAssert.h" #include "mptBaseTypes.h" #include "mptSpan.h" -#if MPT_CXX_AT_LEAST(20) -#include -#endif #include #include @@ -33,85 +33,6 @@ -namespace mpt { - - - -typedef mpt::span byte_span; -typedef mpt::span const_byte_span; - - - -// Tell which types are safe for mpt::byte_cast. -// signed char is actually not allowed to alias into an object representation, -// which means that, if the actual type is not itself signed char but char or -// unsigned char instead, dereferencing the signed char pointer is undefined -// behaviour. -template struct is_byte_castable : public std::false_type { }; -template <> struct is_byte_castable : public std::true_type { }; -template <> struct is_byte_castable : public std::true_type { }; -template <> struct is_byte_castable : public std::true_type { }; -template <> struct is_byte_castable : public std::true_type { }; -template <> struct is_byte_castable : public std::true_type { }; -template <> struct is_byte_castable : public std::true_type { }; - - -template struct is_byte : public std::false_type { }; -template <> struct is_byte : public std::true_type { }; -template <> struct is_byte : public std::true_type { }; - - -template -constexpr bool declare_binary_safe(const T &) noexcept -{ - return false; -} - -constexpr bool declare_binary_safe(const char &) noexcept -{ - return true; -} -constexpr bool declare_binary_safe(const uint8 &) noexcept -{ - return true; -} -constexpr bool declare_binary_safe(const int8 &) noexcept -{ - return true; -} -constexpr bool declare_binary_safe(const std::byte &) noexcept -{ - return true; -} - -// Tell which types are safe to binary write into files. -// By default, no types are safe. -// When a safe type gets defined, -// also specialize this template so that IO functions will work. -template struct is_binary_safe : public std::conditional::type { }; - -// Generic Specialization for arrays. -template struct is_binary_safe : public is_binary_safe { }; -template struct is_binary_safe : public is_binary_safe { }; -template struct is_binary_safe> : public is_binary_safe { }; -template struct is_binary_safe> : public is_binary_safe { }; - - -template -constexpr bool check_binary_size(std::size_t size) noexcept -{ - return true - && (sizeof(T) == size) - && (alignof(T) == 1) - && std::is_standard_layout::value - && std::has_unique_object_representations::value - && mpt::is_binary_safe::value - ; -} - - -} // namespace mpt - #define MPT_BINARY_STRUCT(type, size) \ constexpr bool declare_binary_safe(const type &) { return true; } \ static_assert(mpt::check_binary_size(size)); \ @@ -160,201 +81,4 @@ -namespace mpt { - - - -#if MPT_CXX_AT_LEAST(20) -using std::bit_cast; -#else -// C++2a compatible bit_cast. -// Not implementing constexpr because this is not easily possible pre C++20. -template -MPT_FORCEINLINE typename std::enable_if<(sizeof(Tdst) == sizeof(Tsrc)) && std::is_trivially_copyable::value && std::is_trivially_copyable::value, Tdst>::type bit_cast(const Tsrc & src) noexcept -{ - Tdst dst{}; - std::memcpy(&dst, &src, sizeof(Tdst)); - return dst; -} -#endif - - - -template -struct byte_cast_impl -{ - inline Tdst operator () (Tsrc src) const noexcept - { - static_assert(sizeof(Tsrc) == sizeof(std::byte)); - static_assert(sizeof(Tdst) == sizeof(std::byte)); - // not checking is_byte_castable here because we are actually - // doing a static_cast and converting the value - static_assert(std::is_integral::value || mpt::is_byte::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return static_cast(src); - } -}; -template -struct byte_cast_impl, mpt::span > -{ - inline mpt::span operator () (mpt::span src) const noexcept - { - static_assert(sizeof(Tsrc) == sizeof(std::byte)); - static_assert(sizeof(Tdst) == sizeof(std::byte)); - static_assert(mpt::is_byte_castable::value); - static_assert(mpt::is_byte_castable::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return mpt::as_span(mpt::byte_cast_impl()(src.data()), mpt::byte_cast_impl()(src.data() + src.size())); - } -}; -template -struct byte_cast_impl -{ - inline Tdst* operator () (Tsrc* src) const noexcept - { - static_assert(sizeof(Tsrc) == sizeof(std::byte)); - static_assert(sizeof(Tdst) == sizeof(std::byte)); - static_assert(mpt::is_byte_castable::value); - static_assert(mpt::is_byte_castable::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return reinterpret_cast(src); - } -}; - -template -struct void_cast_impl; - -template -struct void_cast_impl -{ - inline Tdst* operator () (void* src) const noexcept - { - static_assert(sizeof(Tdst) == sizeof(std::byte)); - static_assert(mpt::is_byte_castable::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return reinterpret_cast(src); - } -}; -template -struct void_cast_impl -{ - inline Tdst* operator () (const void* src) const noexcept - { - static_assert(sizeof(Tdst) == sizeof(std::byte)); - static_assert(mpt::is_byte_castable::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return reinterpret_cast(src); - } -}; -template -struct void_cast_impl -{ - inline void* operator () (Tsrc* src) const noexcept - { - static_assert(sizeof(Tsrc) == sizeof(std::byte)); - static_assert(mpt::is_byte_castable::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return reinterpret_cast(src); - } -}; -template -struct void_cast_impl -{ - inline const void* operator () (Tsrc* src) const noexcept - { - static_assert(sizeof(Tsrc) == sizeof(std::byte)); - static_assert(mpt::is_byte_castable::value); - static_assert(std::is_integral::value || mpt::is_byte::value); - return reinterpret_cast(src); - } -}; - -// casts between different byte (char) types or pointers to these types -template -inline Tdst byte_cast(Tsrc src) noexcept -{ - return byte_cast_impl()(src); -} - -// casts between pointers to void and pointers to byte -template -inline Tdst void_cast(Tsrc src) noexcept -{ - return void_cast_impl()(src); -} - - - -template -MPT_CONSTEXPRINLINE std::byte as_byte(T src) noexcept -{ - static_assert(std::is_integral::value); - return static_cast(static_cast(src)); -} - - - -template -struct GetRawBytesFunctor -{ - inline mpt::const_byte_span operator () (const T & v) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(&v), sizeof(T)); - } - inline mpt::byte_span operator () (T & v) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(&v), sizeof(T)); - } -}; - -template -struct GetRawBytesFunctor -{ - inline mpt::const_byte_span operator () (const T (&v)[N]) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); - } - inline mpt::byte_span operator () (T (&v)[N]) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); - } -}; - -template -struct GetRawBytesFunctor -{ - inline mpt::const_byte_span operator () (const T (&v)[N]) const - { - static_assert(mpt::is_binary_safe::type>::value); - return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); - } -}; - -// In order to be able to partially specialize it, -// as_raw_memory is implemented via a class template. -// Do not overload or specialize as_raw_memory directly. -// Using a wrapper (by default just around a cast to const std::byte *), -// allows for implementing raw memory access -// via on-demand generating a cached serialized representation. -template inline mpt::const_byte_span as_raw_memory(const T & v) -{ - return mpt::GetRawBytesFunctor()(v); -} -template inline mpt::byte_span as_raw_memory(T & v) -{ - return mpt::GetRawBytesFunctor()(v); -} - - - -} // namespace mpt - - - OPENMPT_NAMESPACE_END Index: common/mptMutex.h =================================================================== --- common/mptMutex.h (revision 14776) +++ common/mptMutex.h (working copy) @@ -11,123 +11,16 @@ #include "BuildSettings.h" -#if MPT_CXX_AT_LEAST(20) -#include -#else // !C++20 -#include -#endif // C++20 +#include "mpt/mutex/mutex.hpp" -#if !MPT_PLATFORM_MULTITHREADED -#define MPT_MUTEX_NONE 1 -#elif MPT_COMPILER_GENERIC -#define MPT_MUTEX_STD 1 -#elif (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) -#define MPT_MUTEX_STD 1 -#elif (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) -#define MPT_MUTEX_WIN32 1 -#else -#define MPT_MUTEX_STD 1 -#endif - -#ifndef MPT_MUTEX_STD -#define MPT_MUTEX_STD 0 -#endif -#ifndef MPT_MUTEX_WIN32 -#define MPT_MUTEX_WIN32 0 -#endif -#ifndef MPT_MUTEX_NONE -#define MPT_MUTEX_NONE 0 -#endif - #if defined(MODPLUG_TRACKER) && MPT_MUTEX_NONE #error "OpenMPT requires mutexes." #endif -#if MPT_MUTEX_STD -#if !MPT_COMPILER_GENERIC && (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) -#include -#else -#include -#endif -#elif MPT_MUTEX_WIN32 -#include -#endif // MPT_MUTEX - OPENMPT_NAMESPACE_BEGIN namespace mpt { -#if MPT_MUTEX_STD - -typedef std::mutex mutex; -typedef std::recursive_mutex recursive_mutex; - -#elif MPT_MUTEX_WIN32 - -// compatible with c++11 std::mutex, can eventually be replaced without touching any usage site -class mutex { -private: - CRITICAL_SECTION impl; -public: - mutex() { InitializeCriticalSection(&impl); } - ~mutex() { DeleteCriticalSection(&impl); } - void lock() { EnterCriticalSection(&impl); } - bool try_lock() { return TryEnterCriticalSection(&impl) ? true : false; } - void unlock() { LeaveCriticalSection(&impl); } -}; - -// compatible with c++11 std::recursive_mutex, can eventually be replaced without touching any usage site -class recursive_mutex { -private: - CRITICAL_SECTION impl; -public: - recursive_mutex() { InitializeCriticalSection(&impl); } - ~recursive_mutex() { DeleteCriticalSection(&impl); } - void lock() { EnterCriticalSection(&impl); } - bool try_lock() { return TryEnterCriticalSection(&impl) ? true : false; } - void unlock() { LeaveCriticalSection(&impl); } -}; - -#else // MPT_MUTEX_NONE - -class mutex { -public: - mutex() { } - ~mutex() { } - void lock() { } - bool try_lock() { return true; } - void unlock() { } -}; - -class recursive_mutex { -public: - recursive_mutex() { } - ~recursive_mutex() { } - void lock() { } - bool try_lock() { return true; } - void unlock() { } -}; - -#endif // MPT_MUTEX - -#if MPT_MUTEX_STD - -template using lock_guard = std::lock_guard; - -#else // !MPT_MUTEX_STD - -// compatible with c++11 std::lock_guard, can eventually be replaced without touching any usage site -template< typename mutex_type > -class lock_guard { -private: - mutex_type & mutex; -public: - lock_guard( mutex_type & m ) : mutex(m) { mutex.lock(); } - ~lock_guard() { mutex.unlock(); } -}; - -#endif // MPT_MUTEX_STD - #ifdef MODPLUG_TRACKER class recursive_mutex_with_lock_count { Index: common/mptOS.cpp =================================================================== --- common/mptOS.cpp (revision 14776) +++ common/mptOS.cpp (working copy) @@ -89,95 +89,6 @@ #if MPT_OS_WINDOWS - - -static mpt::OS::Windows::Version VersionFromNTDDI_VERSION() noexcept -{ - // Initialize to used SDK version - mpt::OS::Windows::Version::System System = - #if NTDDI_VERSION >= 0x0A000000 // NTDDI_WIN10 - mpt::OS::Windows::Version::Win10 - #elif NTDDI_VERSION >= 0x06030000 // NTDDI_WINBLUE - mpt::OS::Windows::Version::Win81 - #elif NTDDI_VERSION >= 0x06020000 // NTDDI_WIN8 - mpt::OS::Windows::Version::Win8 - #elif NTDDI_VERSION >= 0x06010000 // NTDDI_WIN7 - mpt::OS::Windows::Version::Win7 - #elif NTDDI_VERSION >= 0x06000000 // NTDDI_VISTA - mpt::OS::Windows::Version::WinVista - #elif NTDDI_VERSION >= 0x05020000 // NTDDI_WS03 - mpt::OS::Windows::Version::WinXP64 - #elif NTDDI_VERSION >= NTDDI_WINXP - mpt::OS::Windows::Version::WinXP - #elif NTDDI_VERSION >= NTDDI_WIN2K - mpt::OS::Windows::Version::Win2000 - #else - mpt::OS::Windows::Version::WinNT4 - #endif - ; - return mpt::OS::Windows::Version(System, mpt::OS::Windows::Version::ServicePack(((NTDDI_VERSION & 0xffffu) >> 8) & 0xffu, ((NTDDI_VERSION & 0xffffu) >> 0) & 0xffu), 0, 0); -} - - -static mpt::OS::Windows::Version::System SystemVersionFrom_WIN32_WINNT() noexcept -{ - #if defined(_WIN32_WINNT) - return mpt::OS::Windows::Version::System((static_cast(_WIN32_WINNT) & 0xff00u) >> 8, (static_cast(_WIN32_WINNT) & 0x00ffu) >> 0); - #else - return mpt::OS::Windows::Version::System(); - #endif -} - - -static mpt::OS::Windows::Version GatherWindowsVersion() noexcept -{ -#if MPT_OS_WINDOWS_WINRT - return VersionFromNTDDI_VERSION(); -#else // !MPT_OS_WINDOWS_WINRT - OSVERSIONINFOEXW versioninfoex; - MemsetZero(versioninfoex); - versioninfoex.dwOSVersionInfoSize = sizeof(versioninfoex); -#if MPT_COMPILER_MSVC -#pragma warning(push) -#pragma warning(disable:4996) // 'GetVersionExW': was declared deprecated -#pragma warning(disable:28159) // Consider using 'IsWindows*' instead of 'GetVersionExW'. Reason: Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers. -#endif // MPT_COMPILER_MSVC -#if MPT_COMPILER_CLANG -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -#endif // MPT_COMPILER_CLANG - if(GetVersionExW((LPOSVERSIONINFOW)&versioninfoex) == FALSE) - { - return VersionFromNTDDI_VERSION(); - } -#if MPT_COMPILER_MSVC -#pragma warning(pop) -#endif // MPT_COMPILER_MSVC -#if MPT_COMPILER_CLANG -#pragma clang diagnostic pop -#endif // MPT_COMPILER_CLANG - if(versioninfoex.dwPlatformId != VER_PLATFORM_WIN32_NT) - { - return VersionFromNTDDI_VERSION(); - } - DWORD dwProductType = 0; - #if (_WIN32_WINNT >= 0x0600) // _WIN32_WINNT_VISTA - dwProductType = PRODUCT_UNDEFINED; - if(GetProductInfo(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion, versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor, &dwProductType) == FALSE) - { - dwProductType = PRODUCT_UNDEFINED; - } - #endif - return mpt::OS::Windows::Version( - mpt::OS::Windows::Version::System(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion), - mpt::OS::Windows::Version::ServicePack(versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor), - versioninfoex.dwBuildNumber, - dwProductType - ); -#endif // MPT_OS_WINDOWS_WINRT -} - - #ifdef MODPLUG_TRACKER namespace { @@ -185,7 +96,7 @@ { mpt::OS::Windows::Version version; WindowsVersionCache() noexcept - : version(GatherWindowsVersion()) + : version(mpt::osinfo::windows::Version::Current()) { } }; @@ -198,37 +109,9 @@ } #endif // MODPLUG_TRACKER - - #endif // MPT_OS_WINDOWS -Version::Version() noexcept - : m_SystemIsWindows(false) - , m_System() - , m_ServicePack() - , m_Build() - , m_Type() -{ -} - - -Version Version::NoWindows() noexcept -{ - return Version(); -} - - -Version::Version(mpt::OS::Windows::Version::System system, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build, mpt::OS::Windows::Version::TypeId type) noexcept - : m_SystemIsWindows(true) - , m_System(system) - , m_ServicePack(servicePack) - , m_Build(build) - , m_Type(type) -{ -} - - mpt::OS::Windows::Version Version::Current() noexcept { #if MPT_OS_WINDOWS @@ -235,7 +118,7 @@ #ifdef MODPLUG_TRACKER return GatherWindowsVersionFromCache(); #else // !MODPLUG_TRACKER - return GatherWindowsVersion(); + return mpt::osinfo::windows::Version::Current(); #endif // MODPLUG_TRACKER #else // !MPT_OS_WINDOWS return mpt::OS::Windows::Version::NoWindows(); @@ -243,180 +126,30 @@ } -bool Version::IsWindows() const noexcept +Version::Version() noexcept + : mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::NoWindows()) { - return m_SystemIsWindows; } -bool Version::IsBefore(mpt::OS::Windows::Version::System version) const noexcept +Version Version::NoWindows() noexcept { - if(!m_SystemIsWindows) - { - return false; - } - return m_System < version; + return Version(); } -bool Version::IsBefore(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack) const noexcept +Version::Version(mpt::osinfo::windows::Version v) noexcept + : mpt::osinfo::windows::Version(v) { - if(!m_SystemIsWindows) - { - return false; - } - if(m_System > version) - { - return false; - } - if(m_System < version) - { - return true; - } - return m_ServicePack < servicePack; } -bool Version::IsBefore(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::Build build) const noexcept +Version::Version(mpt::OS::Windows::Version::System system, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build, mpt::OS::Windows::Version::TypeId type) noexcept + : mpt::osinfo::windows::Version(system, servicePack, build, type) { - if(!m_SystemIsWindows) - { - return false; - } - if(m_System > version) - { - return false; - } - if(m_System < version) - { - return true; - } - return m_Build < build; } -bool Version::IsBefore(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build) const noexcept -{ - if(!m_SystemIsWindows) - { - return false; - } - if(m_System > version) - { - return false; - } - if(m_System < version) - { - return true; - } - if(m_ServicePack > servicePack) - { - return false; - } - if(m_ServicePack < servicePack) - { - return true; - } - return m_Build < build; -} - - -bool Version::IsAtLeast(mpt::OS::Windows::Version::System version) const noexcept -{ - if(!m_SystemIsWindows) - { - return false; - } - return m_System >= version; -} - - -bool Version::IsAtLeast(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack) const noexcept -{ - if(!m_SystemIsWindows) - { - return false; - } - if(m_System < version) - { - return false; - } - if(m_System > version) - { - return true; - } - return m_ServicePack >= servicePack; -} - - -bool Version::IsAtLeast(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::Build build) const noexcept -{ - if(!m_SystemIsWindows) - { - return false; - } - if(m_System < version) - { - return false; - } - if(m_System > version) - { - return true; - } - return m_Build >= build; -} - - -bool Version::IsAtLeast(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build) const noexcept -{ - if(!m_SystemIsWindows) - { - return false; - } - if(m_System < version) - { - return false; - } - if(m_System > version) - { - return true; - } - if(m_ServicePack < servicePack) - { - return false; - } - if(m_ServicePack > servicePack) - { - return true; - } - return m_Build >= build; -} - - -mpt::OS::Windows::Version::System Version::GetSystem() const noexcept -{ - return m_System; -} - - -mpt::OS::Windows::Version::ServicePack Version::GetServicePack() const noexcept -{ - return m_ServicePack; -} - - -mpt::OS::Windows::Version::Build Version::GetBuild() const noexcept -{ - return m_Build; -} - - -mpt::OS::Windows::Version::TypeId Version::GetTypeId() const noexcept -{ - return m_Type; -} - - static constexpr struct { Version::System version; const mpt::uchar * name; bool showDetails; } versionMap[] = { { mpt::OS::Windows::Version::WinNewer, UL_("Windows 10 (or newer)"), false }, Index: common/mptOS.h =================================================================== --- common/mptOS.h (revision 14776) +++ common/mptOS.h (working copy) @@ -12,10 +12,11 @@ #include "BuildSettings.h" - #include "mptLibrary.h" +#include "mpt/osinfo/windows_version.hpp" + OPENMPT_NAMESPACE_BEGIN @@ -56,87 +57,15 @@ class Version + : public mpt::osinfo::windows::Version { public: - enum Number : uint64 - { - WinNT4 = 0x0000000400000000ull, - Win2000 = 0x0000000500000000ull, - WinXP = 0x0000000500000001ull, - WinXP64 = 0x0000000500000002ull, - WinVista = 0x0000000600000000ull, - Win7 = 0x0000000600000001ull, - Win8 = 0x0000000600000002ull, - Win81 = 0x0000000600000003ull, - Win10 = 0x0000000a00000000ull, - WinNewer = Win10 + 1ull - }; - - struct System - { - uint32 Major = 0; - uint32 Minor = 0; - System() = default; - constexpr System(Number number) noexcept - : Major(static_cast((static_cast(number) >> 32) & 0xffffffffu)) - , Minor(static_cast((static_cast(number) >> 0) & 0xffffffffu)) - { - } - explicit constexpr System(uint64 number) noexcept - : Major(static_cast((number >> 32) & 0xffffffffu)) - , Minor(static_cast((number >> 0) & 0xffffffffu)) - { - } - explicit constexpr System(uint32 major, uint32 minor) noexcept - : Major(major) - , Minor(minor) - { - } - constexpr operator uint64 () const noexcept - { - return (static_cast(Major) << 32) | (static_cast(Minor) << 0); - } - }; - - struct ServicePack - { - uint16 Major = 0; - uint16 Minor = 0; - ServicePack() = default; - explicit constexpr ServicePack(uint16 major, uint16 minor) noexcept - : Major(major) - , Minor(minor) - { - } - constexpr bool HasServicePack() const noexcept - { - return Major != 0 || Minor != 0; - } - constexpr operator uint32 () const noexcept - { - return (static_cast(Major) << 16) | (static_cast(Minor) << 0); - } - }; - - typedef uint32 Build; - - typedef uint32 TypeId; - static mpt::ustring VersionToString(mpt::OS::Windows::Version::System version); private: - bool m_SystemIsWindows; - - System m_System; - ServicePack m_ServicePack; - Build m_Build; - TypeId m_Type; - -private: - Version() noexcept; public: @@ -143,30 +72,19 @@ static Version NoWindows() noexcept; - Version(mpt::OS::Windows::Version::System system, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build, mpt::OS::Windows::Version::TypeId type) noexcept; - public: - static mpt::OS::Windows::Version Current() noexcept; + Version(mpt::osinfo::windows::Version v) noexcept; public: - bool IsWindows() const noexcept; + Version(mpt::OS::Windows::Version::System system, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build, mpt::OS::Windows::Version::TypeId type) noexcept; - bool IsBefore(mpt::OS::Windows::Version::System version) const noexcept; - bool IsBefore(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack) const noexcept; - bool IsBefore(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::Build build) const noexcept; - bool IsBefore(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build) const noexcept; +public: - bool IsAtLeast(mpt::OS::Windows::Version::System version) const noexcept; - bool IsAtLeast(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack) const noexcept; - bool IsAtLeast(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::Build build) const noexcept; - bool IsAtLeast(mpt::OS::Windows::Version::System version, mpt::OS::Windows::Version::ServicePack servicePack, mpt::OS::Windows::Version::Build build) const noexcept; + static mpt::OS::Windows::Version Current() noexcept; - mpt::OS::Windows::Version::System GetSystem() const noexcept; - mpt::OS::Windows::Version::ServicePack GetServicePack() const noexcept; - mpt::OS::Windows::Version::Build GetBuild() const noexcept; - mpt::OS::Windows::Version::TypeId GetTypeId() const noexcept; +public: mpt::ustring GetName() const; #ifdef MODPLUG_TRACKER Index: common/mptOSError.h =================================================================== --- common/mptOSError.h (revision 14776) +++ common/mptOSError.h (working copy) @@ -7,189 +7,8 @@ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ - #pragma once #include "BuildSettings.h" - - -#include "mptBaseMacros.h" -#include "mptException.h" -#include "mptString.h" -#include "mptStringFormat.h" - -#if defined(MODPLUG_TRACKER) || (defined(LIBOPENMPT_BUILD) && defined(LIBOPENMPT_BUILD_TEST)) -#if MPT_OS_WINDOWS -#include -#if MPT_OS_WINDOWS_WINRT -#include -#endif // MPT_OS_WINDOWS_WINRT -#endif // MPT_OS_WINDOWS -#endif // MODPLUG_TRACKER || (LIBOPENMPT_BUILD && LIBOPENMPT_BUILD_TEST) - -#if defined(MODPLUG_TRACKER) || (defined(LIBOPENMPT_BUILD) && defined(LIBOPENMPT_BUILD_TEST)) -#if MPT_OS_WINDOWS -#include -#endif // MPT_OS_WINDOWS -#endif // MODPLUG_TRACKER || (LIBOPENMPT_BUILD && LIBOPENMPT_BUILD_TEST) - - - -OPENMPT_NAMESPACE_BEGIN - - -#if defined(MODPLUG_TRACKER) || (defined(LIBOPENMPT_BUILD) && defined(LIBOPENMPT_BUILD_TEST)) -#if MPT_OS_WINDOWS - -namespace mpt -{ - -namespace Windows -{ - - -inline mpt::ustring GetErrorMessage(DWORD errorCode, HANDLE hModule = NULL) -{ - mpt::ustring message; -#if MPT_OS_WINDOWS_WINRT - std::vector msgbuf(65536); - if(FormatMessage( - (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - hModule, - errorCode, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - msgbuf.data(), - mpt::saturate_cast(msgbuf.size()), - NULL) - == 0) - { - DWORD e = GetLastError(); - if((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) - { - mpt::throw_out_of_memory(); - } - return {}; - } - message = mpt::ToUnicode(mpt::winstring(msgbuf.data())); -#else - void *lpMsgBuf = nullptr; - if(FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - hModule, - errorCode, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR)&lpMsgBuf, - 0, - NULL) - == 0) - { - DWORD e = GetLastError(); - if(lpMsgBuf) - { - LocalFree(lpMsgBuf); - } - if((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) - { - mpt::throw_out_of_memory(); - } - return {}; - } - if(!lpMsgBuf) - { - return {}; - } - try - { - message = mpt::ToUnicode(mpt::winstring((LPTSTR)lpMsgBuf)); - } catch(mpt::out_of_memory e) - { - LocalFree(lpMsgBuf); - mpt::rethrow_out_of_memory(e); - } - LocalFree(lpMsgBuf); -#endif - return message; -} - - -class Error - : public std::runtime_error -{ -public: - Error(DWORD errorCode, HANDLE hModule = NULL) - : std::runtime_error(mpt::ToCharset(mpt::CharsetException, MPT_UFORMAT("Windows Error: 0x{}: {}")(mpt::ufmt::hex0<8>(errorCode), GetErrorMessage(errorCode, hModule)))) - { - return; - } -}; - - -inline HANDLE CheckFileHANDLE(HANDLE handle) -{ - if(handle == INVALID_HANDLE_VALUE) - { - DWORD err = ::GetLastError(); - if((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) - { - mpt::throw_out_of_memory(); - } - throw Windows::Error(err); - } - return handle; -} - - -inline HANDLE CheckHANDLE(HANDLE handle) -{ - if(handle == NULL) - { - DWORD err = ::GetLastError(); - if((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) - { - mpt::throw_out_of_memory(); - } - throw Windows::Error(err); - } - return handle; -} - - -inline void CheckBOOL(BOOL result) -{ - if(result == FALSE) - { - DWORD err = ::GetLastError(); - if((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) - { - mpt::throw_out_of_memory(); - } - throw Windows::Error(err); - } -} - - -inline void ExpectError(DWORD expected) -{ - DWORD err = ::GetLastError(); - if(err != expected) - { - if((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) - { - mpt::throw_out_of_memory(); - } - throw Windows::Error(err); - } -} - - -} // namespace Windows - -} // namespace mpt - -#endif // MPT_OS_WINDOWS -#endif // MODPLUG_TRACKER || (LIBOPENMPT_BUILD && LIBOPENMPT_BUILD_TEST) - - - -OPENMPT_NAMESPACE_END +#include "mpt/system_error/system_error.hpp" Index: common/mptPathString.cpp =================================================================== --- common/mptPathString.cpp (revision 14776) +++ common/mptPathString.cpp (working copy) @@ -13,6 +13,7 @@ #include "misc_util.h" #include "mptUUID.h" +#include "mptRandom.h" #if MPT_OS_WINDOWS #include @@ -586,7 +587,7 @@ { mpt::PathString filename = mpt::GetTempDirectory(); filename += (!fileNamePrefix.empty() ? fileNamePrefix + P_("_") : mpt::PathString()); - filename += mpt::PathString::FromUnicode(mpt::UUID::GenerateLocalUseOnly().ToUString()); + filename += mpt::PathString::FromUnicode(mpt::UUID::GenerateLocalUseOnly(mpt::global_prng()).ToUString()); filename += (!fileNameExtension.empty() ? P_(".") + fileNameExtension : mpt::PathString()); return filename; } Index: common/mptPathString.h =================================================================== --- common/mptPathString.h (revision 14776) +++ common/mptPathString.h (working copy) @@ -12,19 +12,17 @@ #include "BuildSettings.h" +#include "mpt/base/namespace.hpp" + #include #include "FlagSet.h" -OPENMPT_NAMESPACE_BEGIN - - - #define MPT_DEPRECATED_PATH //#define MPT_DEPRECATED_PATH [[deprecated]] +OPENMPT_NAMESPACE_BEGIN - namespace mpt { Index: common/mptRandom.cpp =================================================================== --- common/mptRandom.cpp (revision 14776) +++ common/mptRandom.cpp (working copy) @@ -11,259 +11,11 @@ #include "mptRandom.h" -#include "Endianness.h" -#include "mptCRC.h" - -#include - -#include -#include - - OPENMPT_NAMESPACE_BEGIN - namespace mpt { - -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - -template -static T log2(T x) -{ - return std::log(x) / std::log(static_cast(2)); -} - - -static MPT_CONSTEXPRINLINE int lower_bound_entropy_bits(unsigned int x) -{ - return detail::lower_bound_entropy_bits(x); -} - - -template -static MPT_CONSTEXPRINLINE bool is_mask(T x) -{ - static_assert(std::numeric_limits::is_integer); - typedef typename std::make_unsigned::type unsigned_T; - unsigned_T ux = static_cast(x); - unsigned_T mask = 0; - for(std::size_t bits = 0; bits <= (sizeof(unsigned_T) * 8); ++bits) - { - mask = (mask << 1) | 1u; - if(ux == mask) - { - return true; - } - } - return false; -} - -#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE - - -namespace { -template struct default_hash { }; -template <> struct default_hash { typedef mpt::checksum::crc16 type; }; -template <> struct default_hash { typedef mpt::checksum::crc16 type; }; -template <> struct default_hash { typedef mpt::checksum::crc32c type; }; -template <> struct default_hash { typedef mpt::checksum::crc64_jones type; }; -} - -template -static T generate_timeseed() -{ - // Note: CRC is actually not that good a choice here, but it is simple and we - // already have an implementaion available. Better choices for mixing entropy - // would be a hash function with proper avalanche characteristics or a block - // or stream cipher with any pre-choosen random key and IV. The only aspect we - // really need here is whitening of the bits. - typename mpt::default_hash::type hash; - - { - uint64be time; - time = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()).count(); - std::byte bytes[sizeof(time)]; - std::memcpy(bytes, &time, sizeof(time)); - hash(std::begin(bytes), std::end(bytes)); - } - -#if !defined(MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK) - { - uint64be time; - time = std::chrono::duration_cast(std::chrono::high_resolution_clock().now().time_since_epoch()).count(); - std::byte bytes[sizeof(time)]; - std::memcpy(bytes, &time, sizeof(time)); - hash(std::begin(bytes), std::end(bytes)); - } -#endif // !MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK - - return static_cast(hash.result()); - -} - - -sane_random_device::sane_random_device() -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - : rd_reliable(false) -#endif // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE -{ -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - try - { - prd = std::make_unique(); - rd_reliable = ((*prd).entropy() > 0.0); - } catch(mpt::out_of_memory e) - { - mpt::rethrow_out_of_memory(e); - } catch(const std::exception &) - { - rd_reliable = false; - } - if(!rd_reliable) -#endif // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE - { - init_fallback(); - } -} - -sane_random_device::sane_random_device(const std::string & token_) - : token(token_) -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - , rd_reliable(false) -#endif // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE -{ -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - try - { - prd = std::make_unique(token); - rd_reliable = ((*prd).entropy() > 0.0); - } catch(mpt::out_of_memory e) - { - mpt::rethrow_out_of_memory(e); - } catch(const std::exception &) - { - rd_reliable = false; - } - if(!rd_reliable) -#endif // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE - { - init_fallback(); - } -} - -void sane_random_device::init_fallback() -{ - if(!rd_fallback) - { - if(token.length() > 0) - { - uint64 seed_val = mpt::generate_timeseed(); - std::vector seeds; - seeds.push_back(static_cast(seed_val >> 32)); - seeds.push_back(static_cast(seed_val >> 0)); - for(std::size_t i = 0; i < token.length(); ++i) - { - seeds.push_back(static_cast(static_cast(token[i]))); - } - std::seed_seq seed(seeds.begin(), seeds.end()); - rd_fallback = std::make_unique(seed); - } else - { - uint64 seed_val = mpt::generate_timeseed(); - unsigned int seeds[2]; - seeds[0] = static_cast(seed_val >> 32); - seeds[1] = static_cast(seed_val >> 0); - std::seed_seq seed(seeds + 0, seeds + 2); - rd_fallback = std::make_unique(seed); - } - } -} - -sane_random_device::result_type sane_random_device::operator()() -{ - mpt::lock_guard l(m); - result_type result = 0; -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - if(prd) - { - try - { - if constexpr(std::random_device::min() != 0 || !mpt::is_mask(std::random_device::max())) - { // insane std::random_device - // This implementation is not exactly uniformly distributed but good enough - // for OpenMPT. - constexpr double rd_min = static_cast(std::random_device::min()); - constexpr double rd_max = static_cast(std::random_device::max()); - constexpr double rd_range = rd_max - rd_min; - constexpr double rd_size = rd_range + 1.0; - const double rd_entropy = mpt::log2(rd_size); - const int iterations = static_cast(std::ceil(result_bits() / rd_entropy)); - double tmp = 0.0; - for(int i = 0; i < iterations; ++i) - { - tmp = (tmp * rd_size) + (static_cast((*prd)()) - rd_min); - } - double result_01 = std::floor(tmp / std::pow(rd_size, iterations)); - result = static_cast(std::floor(result_01 * (static_cast(max() - min()) + 1.0))) + min(); - } else - { // sane std::random_device - result = 0; - std::size_t rd_bits = mpt::lower_bound_entropy_bits(std::random_device::max()); - for(std::size_t entropy = 0; entropy < (sizeof(result_type) * 8); entropy += rd_bits) - { - if(rd_bits < (sizeof(result_type) * 8)) - { - result = (result << rd_bits) | static_cast((*prd)()); - } else - { - result = result | static_cast((*prd)()); - } - } - } - } catch(const std::exception &) - { - rd_reliable = false; - init_fallback(); - } - } else - { - rd_reliable = false; - } - if(!rd_reliable) -#endif // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE - { // std::random_device is unreliable - // XOR the generated random number with more entropy from the time-seeded - // PRNG. - // Note: This is safe even if the std::random_device itself is implemented - // as a std::mt19937 PRNG because we are very likely using a different - // seed. - result ^= mpt::random(*rd_fallback); - } - return result; -} - -uint8 prng_random_device_time_seeder::generate_seed8() -{ - return mpt::generate_timeseed(); -} - -uint16 prng_random_device_time_seeder::generate_seed16() -{ - return mpt::generate_timeseed(); -} - -uint32 prng_random_device_time_seeder::generate_seed32() -{ - return mpt::generate_timeseed(); -} - -uint64 prng_random_device_time_seeder::generate_seed64() -{ - return mpt::generate_timeseed(); -} - #if defined(MODPLUG_TRACKER) && !defined(MPT_BUILD_WINESUPPORT) static mpt::random_device *g_rd = nullptr; @@ -305,8 +57,6 @@ #endif // MODPLUG_TRACKER && !MPT_BUILD_WINESUPPORT - } // namespace mpt - OPENMPT_NAMESPACE_END Index: common/mptRandom.h =================================================================== --- common/mptRandom.h (revision 14776) +++ common/mptRandom.h (working copy) @@ -12,14 +12,21 @@ #include "BuildSettings.h" +#include "mpt/base/bit.hpp" +#ifdef MODPLUG_TRACKER +#include "mpt/random/crand.hpp" +#endif // MODPLUG_TRACKER +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" +#include "mpt/random/seed.hpp" + #include "mptMutex.h" #include #include -#ifdef MODPLUG_TRACKER -#include -#endif // MODPLUG_TRACKER OPENMPT_NAMESPACE_BEGIN @@ -43,204 +50,11 @@ { -inline constexpr uint32 DETERMINISTIC_RNG_SEED = 3141592653u; // pi - -namespace detail -{ - -MPT_CONSTEXPRINLINE int lower_bound_entropy_bits(unsigned int x) -{ - return mpt::bit_width(x) == static_cast(mpt::popcount(x)) ? mpt::bit_width(x) : mpt::bit_width(x) - 1; -} - -} - - -template struct engine_traits -{ - typedef typename Trng::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() - { - return Trng::result_bits(); - } - template - static inline Trng make(Trd & rd) - { - return Trng(rd); - } -}; - - -template -inline T random(Trng & rng) -{ - static_assert(std::numeric_limits::is_integer); - typedef typename std::make_unsigned::type unsigned_T; - const unsigned int rng_bits = mpt::engine_traits::result_bits(); - unsigned_T result = 0; - for(std::size_t entropy = 0; entropy < (sizeof(T) * 8); entropy += rng_bits) - { - if constexpr(rng_bits < (sizeof(T) * 8)) - { - constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) - result = (result << shift_bits) ^ static_cast(rng()); - } else - { - result = static_cast(rng()); - } - } - return static_cast(result); -} - -template -inline T random(Trng & rng) -{ - static_assert(std::numeric_limits::is_integer); - typedef typename std::make_unsigned::type unsigned_T; - const unsigned int rng_bits = mpt::engine_traits::result_bits(); - unsigned_T result = 0; - for(std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) - { - if constexpr(rng_bits < (sizeof(T) * 8)) - { - constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) - result = (result << shift_bits) ^ static_cast(rng()); - } else - { - result = static_cast(rng()); - } - } - if constexpr(required_entropy_bits >= (sizeof(T) * 8)) - { - return static_cast(result); - } else - { - return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); - } -} - -template -inline T random(Trng & rng, std::size_t required_entropy_bits) -{ - static_assert(std::numeric_limits::is_integer); - typedef typename std::make_unsigned::type unsigned_T; - const unsigned int rng_bits = mpt::engine_traits::result_bits(); - unsigned_T result = 0; - for(std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) - { - if constexpr(rng_bits < (sizeof(T) * 8)) - { - constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) - result = (result << shift_bits) ^ static_cast(rng()); - } else - { - result = static_cast(rng()); - } - } - if(required_entropy_bits >= (sizeof(T) * 8)) - { - return static_cast(result); - } else - { - return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); - } -} - -template -struct uniform_real_distribution -{ -private: - T a; - T b; -public: - inline uniform_real_distribution(T a_, T b_) - : a(a_) - , b(b_) - { - return; - } - template - inline T operator()(Trng & rng) const - { - const int mantissa_bits = std::numeric_limits::digits; - return ((b - a) * static_cast(mpt::random(rng)) / static_cast((static_cast(1u) << mantissa_bits))) + a; - } -}; - - -template -inline T random(Trng & rng, T min, T max) -{ - static_assert(!std::numeric_limits::is_integer); - typedef mpt::uniform_real_distribution dis_type; - dis_type dis(min, max); - return static_cast(dis(rng)); -} - - namespace rng { -#if MPT_COMPILER_MSVC -#pragma warning(push) -#pragma warning(disable:4724) // potential mod by 0 -#endif // MPT_COMPILER_MSVC -template -class lcg -{ -public: - typedef Tstate state_type; - typedef Tvalue result_type; -private: - state_type state; -public: - template - explicit inline lcg(Trng & rd) - : state(mpt::random(rd)) - { - operator()(); // we return results from the current state and update state after returning. results in better pipelining. - } - explicit inline lcg(state_type seed) - : state(seed) - { - operator()(); // we return results from the current state and update state after returning. results in better pipelining. - } -public: - static MPT_CONSTEXPRINLINE result_type min() - { - return static_cast(0); - } - static MPT_CONSTEXPRINLINE result_type max() - { - static_assert(((result_mask >> result_shift) << result_shift) == result_mask); - return static_cast(result_mask >> result_shift); - } - static MPT_CONSTEXPRINLINE int result_bits() - { - static_assert(((static_cast(1) << result_bits_) - 1) == (result_mask >> result_shift)); - return result_bits_; - } - inline result_type operator()() - { - // we return results from the current state and update state after returning. results in better pipelining. - state_type s = state; - result_type result = static_cast((s & result_mask) >> result_shift); - s = Util::ModIfNotZero((a * s) + c); - state = s; - return result; - } -}; - -#if MPT_COMPILER_MSVC -#pragma warning(pop) -#endif // MPT_COMPILER_MSVC - -typedef lcg lcg_msvc; -typedef lcg lcg_c99; -typedef lcg lcg_musl; - template class modplug { @@ -297,286 +111,7 @@ } // namespace rng -#ifdef MODPLUG_TRACKER -namespace rng -{ - -class crand -{ -public: - using state_type = void; - using result_type = int; -private: - static void reseed(uint32 seed) - { - std::srand(seed); - } -public: - template - static void reseed(Trd & rd) - { - reseed(mpt::random(rd)); - } -public: - crand() = default; - explicit crand(const std::string &) - { - return; - } -public: - static MPT_CONSTEXPRINLINE result_type min() - { - return 0; - } - static MPT_CONSTEXPRINLINE result_type max() - { - return RAND_MAX; - } - static MPT_CONSTEXPRINLINE int result_bits() - { - return detail::lower_bound_entropy_bits(RAND_MAX); - } - result_type operator()() - { - return std::rand(); - } -}; - -} // namespace rng - -#endif // MODPLUG_TRACKER - - -// C++11 std::random_device may be implemented as a deterministic PRNG. -// There is no way to seed this PRNG and it is allowed to be seeded with the -// same value on each program invocation. This makes std::random_device -// completely useless even as a non-cryptographic entropy pool. -// We fallback to time-seeded std::mt19937 if std::random_device::entropy() is -// 0 or less. -class sane_random_device -{ -private: - mpt::mutex m; - std::string token; -#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) - std::unique_ptr prd; - bool rd_reliable; -#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE - std::unique_ptr rd_fallback; -public: - using result_type = unsigned int; -private: - void init_fallback(); -public: - sane_random_device(); - sane_random_device(const std::string & token); - static MPT_CONSTEXPRINLINE result_type min() - { - return std::numeric_limits::min(); - } - static MPT_CONSTEXPRINLINE result_type max() - { - return std::numeric_limits::max(); - } - static MPT_CONSTEXPRINLINE int result_bits() - { - return sizeof(result_type) * 8; - } - result_type operator()(); -}; - - -template -class seed_seq_values -{ -private: - unsigned int seeds[N]; -public: - template - explicit seed_seq_values(Trd & rd) - { - for(std::size_t i = 0; i < N; ++i) - { - seeds[i] = rd(); - } - } - const unsigned int * begin() const - { - return seeds + 0; - } - const unsigned int * end() const - { - return seeds + N; - } -}; - - -// C++11 random does not provide any sane way to determine the amount of entropy -// required to seed a particular engine. VERY STUPID. -// List the ones we are likely to use. - -template <> struct engine_traits { - enum : std::size_t { seed_bits = sizeof(std::mt19937::result_type) * 8 * std::mt19937::state_size }; - typedef std::mt19937 rng_type; - typedef rng_type::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() { return rng_type::word_size; } - template static inline rng_type make(Trd & rd) - { - std::unique_ptr> values = std::make_unique>(rd); - std::seed_seq seed(values->begin(), values->end()); - return rng_type(seed); - } -}; - -template <> struct engine_traits { - enum : std::size_t { seed_bits = sizeof(std::mt19937_64::result_type) * 8 * std::mt19937_64::state_size }; - typedef std::mt19937_64 rng_type; - typedef rng_type::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() { return rng_type::word_size; } - template static inline rng_type make(Trd & rd) - { - std::unique_ptr> values = std::make_unique>(rd); - std::seed_seq seed(values->begin(), values->end()); - return rng_type(seed); - } -}; - -template <> struct engine_traits { - enum : std::size_t { seed_bits = std::ranlux24_base::word_size }; - typedef std::ranlux24_base rng_type; - typedef rng_type::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() { return rng_type::word_size; } - template static inline rng_type make(Trd & rd) - { - mpt::seed_seq_values values(rd); - std::seed_seq seed(values.begin(), values.end()); - return rng_type(seed); - } -}; - -template <> struct engine_traits { - enum : std::size_t { seed_bits = std::ranlux48_base::word_size }; - typedef std::ranlux48_base rng_type; - typedef rng_type::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() { return rng_type::word_size; } - template static inline rng_type make(Trd & rd) - { - mpt::seed_seq_values values(rd); - std::seed_seq seed(values.begin(), values.end()); - return rng_type(seed); - } -}; - -template <> struct engine_traits { - enum : std::size_t { seed_bits = std::ranlux24_base::word_size }; - typedef std::ranlux24 rng_type; - typedef rng_type::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() { return std::ranlux24_base::word_size; } - template static inline rng_type make(Trd & rd) - { - mpt::seed_seq_values values(rd); - std::seed_seq seed(values.begin(), values.end()); - return rng_type(seed); - } -}; - -template <> struct engine_traits { - enum : std::size_t { seed_bits = std::ranlux48_base::word_size }; - typedef std::ranlux48 rng_type; - typedef rng_type::result_type result_type; - static MPT_CONSTEXPRINLINE int result_bits() { return std::ranlux48_base::word_size; } - template static inline rng_type make(Trd & rd) - { - mpt::seed_seq_values values(rd); - std::seed_seq seed(values.begin(), values.end()); - return rng_type(seed); - } -}; - - -class prng_random_device_time_seeder -{ -private: - uint8 generate_seed8(); - uint16 generate_seed16(); - uint32 generate_seed32(); - uint64 generate_seed64(); -protected: - template inline T generate_seed(); -protected: - prng_random_device_time_seeder() = default; -}; - -template <> inline uint8 prng_random_device_time_seeder::generate_seed() { return generate_seed8(); } -template <> inline uint16 prng_random_device_time_seeder::generate_seed() { return generate_seed16(); } -template <> inline uint32 prng_random_device_time_seeder::generate_seed() { return generate_seed32(); } -template <> inline uint64 prng_random_device_time_seeder::generate_seed() { return generate_seed64(); } - -class prng_random_device_deterministic_seeder -{ -protected: - template constexpr T generate_seed() noexcept - { - return static_cast(mpt::DETERMINISTIC_RNG_SEED); - } -protected: - prng_random_device_deterministic_seeder() = default; -}; - -template -class prng_random_device - : private seeder -{ -public: - using result_type = unsigned int; -private: - mpt::mutex m; - Trng rng; -public: - prng_random_device() - : rng(seeder::template generate_seed()) - { - return; - } - prng_random_device(const std::string &) - : rng(seeder::template generate_seed()) - { - return; - } - static MPT_CONSTEXPRINLINE result_type min() - { - return std::numeric_limits::min(); - } - static MPT_CONSTEXPRINLINE result_type max() - { - return std::numeric_limits::max(); - } - static MPT_CONSTEXPRINLINE int result_bits() - { - return sizeof(unsigned int) * 8; - } - result_type operator()() - { - mpt::lock_guard l(m); - return mpt::random(rng); - } -}; - - -using deterministc_random_device = mpt::prng_random_device; - -using deterministic_fast_prng = mpt::rng::lcg_msvc; -using deterministic_good_prng = mpt::rng::lcg_musl; - - -template -inline Trng make_prng(Trd & rd) -{ - return mpt::engine_traits::make(rd); -} - - template class thread_safe_prng : private Trng @@ -626,8 +161,8 @@ // 2. Use fast PRNGs in order to not waste time fuzzing more complex PRNG // implementations. -using fast_prng = deterministic_fast_prng; -using good_prng = deterministic_good_prng; +using fast_prng = deterministic_fast_engine; +using good_prng = deterministic_good_engine; #else // !MPT_BUILD_FUZZER @@ -636,8 +171,8 @@ // We cannot use std::minstd_rand here because it has not a power-of-2 sized // output domain which we rely upon. -using fast_prng = mpt::rng::lcg_msvc; // about 3 ALU operations, ~32bit of state, suited for inner loops -using good_prng = std::ranlux48; +using fast_prng = fast_engine; // about 3 ALU operations, ~32bit of state, suited for inner loops +using good_prng = good_engine; #endif // MPT_BUILD_FUZZER Index: common/mptSpan.h =================================================================== --- common/mptSpan.h (revision 14776) +++ common/mptSpan.h (working copy) @@ -7,225 +7,8 @@ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ - #pragma once #include "BuildSettings.h" - -#include "mptBaseTypes.h" - -#if MPT_CXX_AT_LEAST(20) -#include -#include -#else // !C++20 -#include -#include -#include -#include -#endif // C++20 - - - -OPENMPT_NAMESPACE_BEGIN - - - - -namespace mpt { - - - -#if MPT_CXX_AT_LEAST(20) - -using std::span; -using std::dynamic_extent; - -#else // !C++20 - -// Simplified version of gsl::span. -// Non-owning read-only or read-write view into a contiguous block of T -// objects, i.e. equivalent to a (beg,end) or (data,size) tuple. -// Can eventually be replaced without further modifications with a full C++20 -// std::span. - -inline constexpr std::size_t dynamic_extent = std::numeric_limits::max(); - -template -class span -{ - -public: - - using element_type = T; - using value_type = typename std::remove_cv::type; - using index_type = std::size_t; - using pointer = T *; - using const_pointer = const T *; - using reference = T &; - using const_reference = const T &; - - using iterator = pointer; - using const_iterator = const_pointer; - - using difference_type = typename std::iterator_traits::difference_type; - -private: - - T * m_beg; - T * m_end; - -public: - - span() noexcept - : m_beg(nullptr) - , m_end(nullptr) - { - } - - span(pointer beg, pointer end) - : m_beg(beg) - , m_end(end) - { - } - - span(pointer data, index_type size) - : m_beg(data) - , m_end(data + size) - { - } - - template span(element_type (&arr)[N]) - : m_beg(arr) - , m_end(arr + N) - { - } - - template span(std::array &arr) - : m_beg(arr.data()) - , m_end(arr.data() + arr.size()) - { - } - - template span(const std::array &arr) - : m_beg(arr.data()) - , m_end(arr.data() + arr.size()) - { - } - - span(const span &other) noexcept = default; - - template span(const span &other) - : m_beg(other.begin()) - , m_end(other.end()) - { - } - - span & operator = (const span & other) noexcept = default; - - iterator begin() const - { - return iterator(m_beg); - } - iterator end() const - { - return iterator(m_end); - } - - const_iterator cbegin() const - { - return const_iterator(begin()); - } - const_iterator cend() const - { - return const_iterator(end()); - } - - reference operator[](index_type index) - { - return m_beg[index]; - } - const_reference operator[](index_type index) const - { - return m_beg[index]; - } - - bool operator==(span const & other) const noexcept - { - return size() == other.size() && (m_beg == other.m_beg || std::equal(begin(), end(), other.begin())); - } - bool operator!=(span const & other) const noexcept - { - return !(*this == other); - } - - pointer data() const noexcept - { - return m_beg; - } - - bool empty() const noexcept - { - return size() == 0; - } - - index_type size() const noexcept - { - return static_cast(std::distance(m_beg, m_end)); - } - index_type length() const noexcept - { - return size(); - } - - span subspan(std::size_t offset, std::size_t count = mpt::dynamic_extent) const - { - return span(data() + offset, (count == mpt::dynamic_extent) ? (size() - offset) : count); - } - - span first(std::size_t count) const - { - return span(data(), count); - } - - span last(std::size_t count) const - { - return span(data() + (size() - count), count); - } - -}; // class span - -#endif // C++20 - -template inline span as_span(T * beg, T * end) -{ - return span(beg, end); -} - -template inline span as_span(T * data, std::size_t size) -{ - return span(data, size); -} - -template inline span as_span(T (&arr)[N]) -{ - return span(std::begin(arr), std::end(arr)); -} - -template inline span as_span(std::array & cont) -{ - return span(cont); -} - -template inline span as_span(const std::array & cont) -{ - return span(cont); -} - - - -} // namespace mpt - - - -OPENMPT_NAMESPACE_END +#include "mpt/base/span.hpp" Index: common/mptString.cpp =================================================================== --- common/mptString.cpp (revision 14776) +++ common/mptString.cpp (working copy) @@ -12,9 +12,12 @@ #include "Endianness.h" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/string_convert/convert.hpp" + #include #include -#include #include #include @@ -31,11 +34,7 @@ #include #endif // MPT_OS_WINDOWS -#if MPT_OS_DJGPP && defined(MPT_ENABLE_CHARSET_LOCALE) -#include -#endif // MPT_OS_DJGPP && MPT_ENABLE_CHARSET_LOCALE - OPENMPT_NAMESPACE_BEGIN @@ -305,105 +304,6 @@ -/* -default 1:1 mapping -static constexpr char32_t CharsetTableISO8859_1[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, - 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, - 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, - 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, - 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, - 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, - 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, - 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, - 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff -}; -*/ - -static constexpr char32_t CharsetTableISO8859_15[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, - 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, - 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, - 0x00a0,0x00a1,0x00a2,0x00a3,0x20ac,0x00a5,0x0160,0x00a7,0x0161,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, - 0x00b0,0x00b1,0x00b2,0x00b3,0x017d,0x00b5,0x00b6,0x00b7,0x017e,0x00b9,0x00ba,0x00bb,0x0152,0x0153,0x0178,0x00bf, - 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, - 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, - 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, - 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff -}; - -static constexpr char32_t CharsetTableWindows1252[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, - 0x20ac,0x0081,0x201a,0x0192,0x201e,0x2026,0x2020,0x2021,0x02c6,0x2030,0x0160,0x2039,0x0152,0x008d,0x017d,0x008f, - 0x0090,0x2018,0x2019,0x201c,0x201d,0x2022,0x2013,0x2014,0x02dc,0x2122,0x0161,0x203a,0x0153,0x009d,0x017e,0x0178, - 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, - 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, - 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, - 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, - 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, - 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff -}; - -static constexpr char32_t CharsetTableCP850[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x2302, - 0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7,0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5, - 0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9,0x00ff,0x00d6,0x00dc,0x00F8,0x00a3,0x00D8,0x00D7,0x0192, - 0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba,0x00bf,0x00AE,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb, - 0x2591,0x2592,0x2593,0x2502,0x2524,0x00C1,0x00C2,0x00C0,0x00A9,0x2563,0x2551,0x2557,0x255d,0x00A2,0x00A5,0x2510, - 0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x00E3,0x00C3,0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x00A4, - 0x00F0,0x00D0,0x00CA,0x00CB,0x00C8,0x0131,0x00CD,0x00CE,0x00CF,0x2518,0x250c,0x2588,0x2584,0x00A6,0x00CC,0x2580, - 0x00D3,0x00df,0x00D4,0x00D2,0x00F5,0x00D5,0x00b5,0x00FE,0x00DE,0x00DA,0x00DB,0x00D9,0x00FD,0x00DD,0x00AF,0x00B4, - 0x00AD,0x00b1,0x2017,0x00BE,0x00B6,0x00A7,0x00f7,0x00B8,0x00b0,0x00A8,0x00b7,0x00B9,0x00B3,0x00b2,0x25a0,0x00a0 -}; - -static constexpr char32_t CharsetTableCP437[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x2302, - 0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7,0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5, - 0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9,0x00ff,0x00d6,0x00dc,0x00a2,0x00a3,0x00a5,0x20a7,0x0192, - 0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba,0x00bf,0x2310,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb, - 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556,0x2555,0x2563,0x2551,0x2557,0x255d,0x255c,0x255b,0x2510, - 0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x255e,0x255f,0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x2567, - 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256b,0x256a,0x2518,0x250c,0x2588,0x2584,0x258c,0x2590,0x2580, - 0x03b1,0x00df,0x0393,0x03c0,0x03a3,0x03c3,0x00b5,0x03c4,0x03a6,0x0398,0x03a9,0x03b4,0x221e,0x03c6,0x03b5,0x2229, - 0x2261,0x00b1,0x2265,0x2264,0x2320,0x2321,0x00f7,0x2248,0x00b0,0x2219,0x00b7,0x221a,0x207f,0x00b2,0x25a0,0x00a0 -}; - - #define C(x) (mpt::char_value((x))) // AMS1 actually only supports ASCII plus the modified control characters and no high chars at all. @@ -450,677 +350,26 @@ #undef C -#if MPT_OS_WINDOWS - -static bool TestCodePage(UINT cp) -{ - return IsValidCodePage(cp) ? true : false; -} - -static bool HasCharset(Charset charset) -{ - bool result = false; - switch(charset) - { -#if defined(MPT_ENABLE_CHARSET_LOCALE) - case Charset::Locale: result = true; break; -#endif - case Charset::UTF8: result = TestCodePage(CP_UTF8); break; - case Charset::ASCII: result = TestCodePage(20127); break; - case Charset::ISO8859_1: result = TestCodePage(28591); break; - case Charset::ISO8859_15: result = TestCodePage(28605); break; - case Charset::CP850: result = TestCodePage(850); break; - case Charset::CP437: result = TestCodePage(437); break; - case Charset::Windows1252: result = TestCodePage(1252); break; - case Charset::CP437AMS: result = false; break; - case Charset::CP437AMS2: result = false; break; - } - return result; -} - -static UINT CharsetToCodepage(Charset charset) -{ - switch(charset) - { -#if defined(MPT_ENABLE_CHARSET_LOCALE) - case Charset::Locale: return CP_ACP; break; -#endif - case Charset::UTF8: return CP_UTF8; break; - case Charset::ASCII: return 20127; break; - case Charset::ISO8859_1: return 28591; break; - case Charset::ISO8859_15: return 28605; break; - case Charset::CP850: return 850; break; - case Charset::CP437: return 437; break; - case Charset::CP437AMS: return 437; break; // fallback, should not happen - case Charset::CP437AMS2: return 437; break; // fallback, should not happen - case Charset::Windows1252: return 1252; break; - } - return 0; -} - -template -static Tdststring EncodeCodepage(UINT codepage, const mpt::wstring &src) -{ - static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); - static_assert((std::is_same::value)); - Tdststring encoded_string; - int required_size = WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), nullptr, 0, nullptr, nullptr); - if(required_size > 0) - { - encoded_string.resize(required_size); - WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), reinterpret_cast(encoded_string.data()), required_size, nullptr, nullptr); - } - return encoded_string; -} - -template -static mpt::wstring DecodeCodepage(UINT codepage, const Tsrcstring &src) -{ - static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); - static_assert((std::is_same::value)); - mpt::wstring decoded_string; - int required_size = MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), nullptr, 0); - if(required_size > 0) - { - decoded_string.resize(required_size); - MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), decoded_string.data(), required_size); - } - return decoded_string; -} - -#endif // MPT_OS_WINDOWS - - -template -static mpt::wstring From8bit(const Tsrcstring &str, const char32_t (&table)[256], mpt::wchar replacement = MPT_WCHAR('\uFFFD')) -{ - mpt::wstring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - std::size_t c = static_cast(mpt::char_value(str[i])); - if(c < std::size(table)) - { - res.push_back(static_cast(table[c])); - } else - { - res.push_back(replacement); - } - } - return res; -} - -template -static Tdststring To8bit(const mpt::wstring &str, const char32_t (&table)[256], char replacement = '?') -{ - Tdststring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - char32_t c = static_cast(str[i]); - bool found = false; - // Try non-control characters first. - // In cases where there are actual characters mirrored in this range (like in AMS/AMS2 character sets), - // characters in the common range are preferred this way. - for(std::size_t x = 0x20; x < std::size(table); ++x) - { - if(c == table[x]) - { - res.push_back(static_cast(static_cast(x))); - found = true; - break; - } - } - if(!found) - { - // try control characters - for(std::size_t x = 0x00; x < std::size(table) && x < 0x20; ++x) - { - if(c == table[x]) - { - res.push_back(static_cast(static_cast(x))); - found = true; - break; - } - } - } - if(!found) - { - res.push_back(replacement); - } - } - return res; -} - -template -static mpt::wstring FromAscii(const Tsrcstring &str, mpt::wchar replacement = MPT_WCHAR('\uFFFD')) -{ - mpt::wstring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - uint8 c = str[i]; - if(c <= 0x7f) - { - res.push_back(static_cast(static_cast(c))); - } else - { - res.push_back(replacement); - } - } - return res; -} - -template -static Tdststring ToAscii(const mpt::wstring &str, char replacement = '?') -{ - Tdststring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - char32_t c = static_cast(str[i]); - if(c <= 0x7f) - { - res.push_back(static_cast(static_cast(c))); - } else - { - res.push_back(replacement); - } - } - return res; -} - -template -static mpt::wstring FromISO_8859_1(const Tsrcstring &str, mpt::wchar replacement = MPT_WCHAR('\uFFFD')) -{ - MPT_UNREFERENCED_PARAMETER(replacement); - mpt::wstring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - uint8 c = str[i]; - res.push_back(static_cast(static_cast(c))); - } - return res; -} - -template -static Tdststring ToISO_8859_1(const mpt::wstring &str, char replacement = '?') -{ - Tdststring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - char32_t c = static_cast(str[i]); - if(c <= 0xff) - { - res.push_back(static_cast(static_cast(c))); - } else - { - res.push_back(replacement); - } - } - return res; -} - - -#if defined(MPT_ENABLE_CHARSET_LOCALE) && !defined(MPT_LOCALE_ASSUME_CHARSET) - -// Note: -// -// std::codecvt::out in LLVM libc++ does not advance in and out pointers when -// running into a non-convertible character. This can happen when no locale is -// set on FreeBSD or MacOSX. This behaviour violates the C++ standard. -// -// We apply the following (albeit costly, even on other platforms) work-around: -// If the conversion errors out and does not advance the pointers at all, we -// retry the conversion with a space character prepended to the string. If it -// still does error out, we retry the whole conversion character by character. -// This is costly even on other platforms in one single case: The first -// character is an invalid Unicode code point or otherwise not convertible. Any -// following non-convertible characters are not a problem. - -static std::wstring LocaleDecode(const std::string &str, const std::locale & locale, wchar_t replacement = L'\uFFFD', int retry = 0, bool * progress = nullptr) -{ - if(str.empty()) - { - return std::wstring(); - } - std::vector out; - using codecvt_type = std::codecvt; - std::mbstate_t state = std::mbstate_t(); - const codecvt_type & facet = std::use_facet(locale); - codecvt_type::result result = codecvt_type::partial; - const char * in_begin = str.data(); - const char * in_end = in_begin + str.size(); - out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); - wchar_t * out_begin = &(out[0]); - wchar_t * out_end = &(out[0]) + out.size(); - const char * in_next = nullptr; - wchar_t * out_next = nullptr; - do - { - if(retry == 2) - { - for(;;) - { - in_next = nullptr; - out_next = nullptr; - result = facet.in(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); - if(result == codecvt_type::partial && in_next == in_begin + 1) - { - in_begin = in_next; - out_begin = out_next; - continue; - } else - { - break; - } - } - } else - { - in_next = nullptr; - out_next = nullptr; - result = facet.in(state, in_begin, in_end, in_next, out_begin, out_end, out_next); - } - if(result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) - { - out.resize(out.size() * 2); - in_begin = in_next; - out_begin = &(out[0]) + (out_next - out_begin); - out_end = &(out[0]) + out.size(); - continue; - } - if(retry == 0) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - bool made_progress = true; - LocaleDecode(std::string(" ") + str, locale, replacement, 1, &made_progress); - if(!made_progress) - { - return LocaleDecode(str, locale, replacement, 2); - } - } - } else if(retry == 1) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - *progress = false; - } else - { - *progress = true; - } - return std::wstring(); - } - if(result == codecvt_type::error) - { - ++in_next; - *out_next = replacement; - ++out_next; - } - in_begin = in_next; - out_begin = out_next; - } while((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); - return std::wstring(&(out[0]), out_next); -} - -static std::string LocaleEncode(const std::wstring &str, const std::locale & locale, char replacement = '?', int retry = 0, bool * progress = nullptr) -{ - if(str.empty()) - { - return std::string(); - } - std::vector out; - using codecvt_type = std::codecvt; - std::mbstate_t state = std::mbstate_t(); - const codecvt_type & facet = std::use_facet(locale); - codecvt_type::result result = codecvt_type::partial; - const wchar_t * in_begin = str.data(); - const wchar_t * in_end = in_begin + str.size(); - out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); - char * out_begin = &(out[0]); - char * out_end = &(out[0]) + out.size(); - const wchar_t * in_next = nullptr; - char * out_next = nullptr; - do - { - if(retry == 2) - { - for(;;) - { - in_next = nullptr; - out_next = nullptr; - result = facet.out(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); - if(result == codecvt_type::partial && in_next == in_begin + 1) - { - in_begin = in_next; - out_begin = out_next; - continue; - } else - { - break; - } - } - } else - { - in_next = nullptr; - out_next = nullptr; - result = facet.out(state, in_begin, in_end, in_next, out_begin, out_end, out_next); - } - if(result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) - { - out.resize(out.size() * 2); - in_begin = in_next; - out_begin = &(out[0]) + (out_next - out_begin); - out_end = &(out[0]) + out.size(); - continue; - } - if(retry == 0) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - bool made_progress = true; - LocaleEncode(std::wstring(L" ") + str, locale, replacement, 1, &made_progress); - if(!made_progress) - { - return LocaleEncode(str, locale, replacement, 2); - } - } - } else if(retry == 1) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - *progress = false; - } else - { - *progress = true; - } - return std::string(); - } - if(result == codecvt_type::error) - { - ++in_next; - *out_next = replacement; - ++out_next; - } - in_begin = in_next; - out_begin = out_next; - } while((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); - return std::string(&(out[0]), out_next); -} - - -template -static std::wstring FromLocale(const Tsrcstring &str, wchar_t replacement = L'\uFFFD') -{ - std::string tmp(str.begin(), str.end()); - return String::LocaleDecode(tmp, std::locale(""), replacement); -} -template <> -std::wstring FromLocale(const std::string &str, wchar_t replacement) -{ - return String::LocaleDecode(str, std::locale(""), replacement); -} - -template -static Tdststring ToLocale(const std::wstring &str, char replacement = '?') -{ - std::string tmp = String::LocaleEncode(str, std::locale(""), replacement); - return Tdststring(tmp.begin(), tmp.end()); -} -template <> -std::string ToLocale(const std::wstring &str, char replacement) -{ - return String::LocaleEncode(str, std::locale(""), replacement); -} - - -#endif // MPT_ENABLE_CHARSET_LOCALE && !MPT_LOCALE_ASSUME_CHARSET - -template -static mpt::wstring FromUTF8(const Tsrcstring &str, mpt::wchar replacement = MPT_WCHAR('\uFFFD')) -{ - const Tsrcstring &in = str; - - mpt::wstring out; - - // state: - std::size_t charsleft = 0; - char32_t ucs4 = 0; - - for ( uint8 c : in ) { - - if ( charsleft == 0 ) { - - if ( ( c & 0x80 ) == 0x00 ) { - out.push_back( (mpt::wchar)c ); - } else if ( ( c & 0xE0 ) == 0xC0 ) { - ucs4 = c & 0x1F; - charsleft = 1; - } else if ( ( c & 0xF0 ) == 0xE0 ) { - ucs4 = c & 0x0F; - charsleft = 2; - } else if ( ( c & 0xF8 ) == 0xF0 ) { - ucs4 = c & 0x07; - charsleft = 3; - } else { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - - } else { - - if ( ( c & 0xC0 ) != 0x80 ) { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - ucs4 <<= 6; - ucs4 |= c & 0x3F; - charsleft--; - - if ( charsleft == 0 ) { - if constexpr ( sizeof( mpt::wchar ) == 2 ) { - if ( ucs4 > 0x1fffff ) { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - if ( ucs4 <= 0xffff ) { - out.push_back( static_cast(ucs4) ); - } else { - uint32 surrogate = static_cast(ucs4) - 0x10000; - uint16 hi_sur = static_cast( ( 0x36 << 10 ) | ( (surrogate>>10) & ((1<<10)-1) ) ); - uint16 lo_sur = static_cast( ( 0x37 << 10 ) | ( (surrogate>> 0) & ((1<<10)-1) ) ); - out.push_back( hi_sur ); - out.push_back( lo_sur ); - } - } else { - out.push_back( static_cast( ucs4 ) ); - } - ucs4 = 0; - } - - } - - } - - if ( charsleft != 0 ) { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - - return out; - -} - -template -static Tdststring ToUTF8(const mpt::wstring &str, char replacement = '?') -{ - const mpt::wstring &in = str; - - Tdststring out; - - for ( std::size_t i=0; i( wc ); - if ( i + 1 < in.length() ) { - // check for surrogate pair - uint16 hi_sur = in[i+0]; - uint16 lo_sur = in[i+1]; - if ( hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37 ) { - // surrogate pair - ++i; - hi_sur &= (1<<10)-1; - lo_sur &= (1<<10)-1; - ucs4 = ( static_cast(hi_sur) << 10 ) | ( static_cast(lo_sur) << 0 ); - } else { - // no surrogate pair - ucs4 = static_cast( c ); - } - } else { - // no surrogate possible - ucs4 = static_cast( c ); - } - } else { - ucs4 = static_cast( wc ); - } - - if ( ucs4 > 0x1fffff ) { - out.push_back( replacement ); - continue; - } - - uint8 utf8[6]; - std::size_t numchars = 0; - for ( numchars = 0; numchars < 6; numchars++ ) { - utf8[numchars] = ucs4 & 0x3F; - ucs4 >>= 6; - if ( ucs4 == 0 ) { - break; - } - } - numchars++; - - if ( numchars == 1 ) { - out.push_back( utf8[0] ); - continue; - } - - if ( numchars == 2 && utf8[numchars-1] == 0x01 ) { - // generate shortest form - out.push_back( utf8[0] | 0x40 ); - continue; - } - - std::size_t charsleft = numchars; - while ( charsleft > 0 ) { - if ( charsleft == numchars ) { - out.push_back( utf8[ charsleft - 1 ] | ( ((1<> 0) & 1; - if(cf == 0) - { - active_codepage = regs.x.bx; - system_codepage = regs.x.dx; - } - } - mpt::Charset result = mpt::Charset::CP437; - if(active_codepage == 0) - { - result = mpt::Charset::CP437; - } else if(active_codepage == 437) - { - result = mpt::Charset::CP437; - } else if(active_codepage == 850) - { - result = mpt::Charset::CP850; - } else if(system_codepage == 437) - { - result = mpt::Charset::CP437; - } else if(system_codepage == 850) - { - result = mpt::Charset::CP850; - } else - { - result = mpt::Charset::CP437; - } - return result; -} - -#endif // MPT_OS_DJGPP && MPT_ENABLE_CHARSET_LOCALE - - // templated on 8bit strings because of type-safe variants template -static Tdststring EncodeImpl(Charset charset, const mpt::wstring &src) +static Tdststring EncodeImpl(Charset charset, const mpt::widestring &src) { static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); static_assert((std::is_same::value)); - #if defined(MPT_ENABLE_CHARSET_LOCALE) - #if defined(MPT_LOCALE_ASSUME_CHARSET) - if(charset == Charset::Locale) - { - charset = MPT_LOCALE_ASSUME_CHARSET; - } - #endif - #endif - #if MPT_OS_WINDOWS - if(HasCharset(charset)) - { - return EncodeCodepage(CharsetToCodepage(charset), src); - } - #endif switch(charset) { #if defined(MPT_ENABLE_CHARSET_LOCALE) - #if defined(MPT_LOCALE_ASSUME_CHARSET) - case Charset::Locale: MPT_ASSERT_NOTREACHED(); break; - #else - case Charset::Locale: return String::ToLocale(src); break; - #endif + case Charset::Locale: return mpt::encode(mpt::logical_encoding::locale, src); break; #endif - case Charset::UTF8: return String::ToUTF8(src); break; - case Charset::ASCII: return String::ToAscii(src); break; - case Charset::ISO8859_1: return String::ToISO_8859_1(src); break; - case Charset::ISO8859_15: return String::To8bit(src, CharsetTableISO8859_15); break; - case Charset::CP850: return String::To8bit(src, CharsetTableCP850); break; - case Charset::CP437: return String::To8bit(src, CharsetTableCP437); break; - case Charset::CP437AMS: return String::To8bit(src, CharsetTableCP437AMS); break; - case Charset::CP437AMS2: return String::To8bit(src, CharsetTableCP437AMS2); break; - case Charset::Windows1252: return String::To8bit(src, CharsetTableWindows1252); break; + case Charset::UTF8: return mpt::encode(mpt::common_encoding::utf8, src); break; + case Charset::ASCII: return mpt::encode(mpt::common_encoding::ascii, src); break; + case Charset::ISO8859_1: return mpt::encode(mpt::common_encoding::iso8859_1, src); break; + case Charset::ISO8859_15: return mpt::encode(mpt::common_encoding::iso8859_15, src); break; + case Charset::CP850: return mpt::encode(mpt::common_encoding::cp850, src); break; + case Charset::CP437: return mpt::encode(mpt::common_encoding::cp437, src); break; + case Charset::CP437AMS: return mpt::encode(CharsetTableCP437AMS, src); break; + case Charset::CP437AMS2: return mpt::encode(CharsetTableCP437AMS2, src); break; + case Charset::Windows1252: return mpt::encode(mpt::common_encoding::windows1252, src); break; } return Tdststring(); } @@ -1128,44 +377,26 @@ // templated on 8bit strings because of type-safe variants template -static mpt::wstring DecodeImpl(Charset charset, const Tsrcstring &src) +static mpt::widestring DecodeImpl(Charset charset, const Tsrcstring &src) { static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); static_assert((std::is_same::value)); - #if defined(MPT_ENABLE_CHARSET_LOCALE) - #if defined(MPT_LOCALE_ASSUME_CHARSET) - if(charset == Charset::Locale) - { - charset = MPT_LOCALE_ASSUME_CHARSET; - } - #endif - #endif - #if MPT_OS_WINDOWS - if(HasCharset(charset)) - { - return DecodeCodepage(CharsetToCodepage(charset), src); - } - #endif switch(charset) { #if defined(MPT_ENABLE_CHARSET_LOCALE) - #if defined(MPT_LOCALE_ASSUME_CHARSET) - case Charset::Locale: MPT_ASSERT_NOTREACHED(); break; - #else - case Charset::Locale: return String::FromLocale(src); break; - #endif + case Charset::Locale: return mpt::decode(mpt::logical_encoding::locale, src); break; #endif - case Charset::UTF8: return String::FromUTF8(src); break; - case Charset::ASCII: return String::FromAscii(src); break; - case Charset::ISO8859_1: return String::FromISO_8859_1(src); break; - case Charset::ISO8859_15: return String::From8bit(src, CharsetTableISO8859_15); break; - case Charset::CP850: return String::From8bit(src, CharsetTableCP850); break; - case Charset::CP437: return String::From8bit(src, CharsetTableCP437); break; - case Charset::CP437AMS: return String::From8bit(src, CharsetTableCP437AMS); break; - case Charset::CP437AMS2: return String::From8bit(src, CharsetTableCP437AMS2); break; - case Charset::Windows1252: return String::From8bit(src, CharsetTableWindows1252); break; + case Charset::UTF8: return mpt::decode(mpt::common_encoding::utf8, src); break; + case Charset::ASCII: return mpt::decode(mpt::common_encoding::ascii, src); break; + case Charset::ISO8859_1: return mpt::decode(mpt::common_encoding::iso8859_1, src); break; + case Charset::ISO8859_15: return mpt::decode(mpt::common_encoding::iso8859_15, src); break; + case Charset::CP850: return mpt::decode(mpt::common_encoding::cp850, src); break; + case Charset::CP437: return mpt::decode(mpt::common_encoding::cp437, src); break; + case Charset::CP437AMS: return mpt::decode(CharsetTableCP437AMS, src); break; + case Charset::CP437AMS2: return mpt::decode(CharsetTableCP437AMS2, src); break; + case Charset::Windows1252: return mpt::decode(mpt::common_encoding::windows1252, src); break; } - return mpt::wstring(); + return mpt::widestring(); } @@ -1191,7 +422,7 @@ bool IsUTF8(const std::string &str) { - return (str == String::EncodeImpl(mpt::Charset::UTF8, String::DecodeImpl(mpt::Charset::UTF8, str))); + return mpt::is_utf8(str); } @@ -1451,9 +682,9 @@ mpt::ustring result; bool noCharsetMatch = true; mpt::Charset charset = mpt::CharsetFromCodePage(codepage, fallback, &noCharsetMatch); - if(noCharsetMatch && mpt::String::TestCodePage(codepage)) + if(noCharsetMatch && mpt::has_codepage(codepage)) { - result = mpt::ToUnicode(mpt::String::DecodeCodepage(codepage, str)); + result = mpt::ToUnicode(mpt::decode(codepage, str)); } else { result = mpt::ToUnicode(charset, str); @@ -1470,20 +701,12 @@ char ToLowerCaseAscii(char c) { - if('A' <= c && c <= 'Z') - { - c += 'a' - 'A'; - } - return c; + return mpt::to_lower_ascii(c); } char ToUpperCaseAscii(char c) { - if('a' <= c && c <= 'z') - { - c -= 'a' - 'A'; - } - return c; + return mpt::to_upper_ascii(c); } std::string ToLowerCaseAscii(std::string s) Index: common/mptString.h =================================================================== --- common/mptString.h (revision 14776) +++ common/mptString.h (working copy) @@ -12,6 +12,9 @@ #include "BuildSettings.h" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + #include "mptAlloc.h" #include "mptBaseTypes.h" #include "mptSpan.h" @@ -24,6 +27,7 @@ #include + OPENMPT_NAMESPACE_BEGIN @@ -32,146 +36,22 @@ -template inline span as_span(std::basic_string & str) -{ - return span(str.data(), str.size()); -} -template inline span as_span(const std::basic_string & str) -{ - return span(str.data(), str.size()); -} - - -template inline std::vector::type> make_vector(const std::basic_string & str) -{ - return std::vector::type>(str.begin(), str.end()); -} - - - -template inline std::basic_string::type> make_basic_string(T * beg, T * end) -{ - return std::basic_string::type>(beg, end); -} - -template inline std::basic_string::type> make_basic_string(T * data, std::size_t size) -{ - return std::basic_string::type>(data, data + size); -} - -template inline std::basic_string::type> make_basic_string(mpt::span data) -{ - return std::basic_string::type>(data.data(), data.data() + data.size()); -} - -template inline std::basic_string::type> make_basic_string(T (&arr)[N]) -{ - return std::basic_string::type>(std::begin(arr), std::end(arr)); -} - -template inline std::basic_string::type> make_basic_string(const std::vector & str) -{ - return std::vector::type>(str.begin(), str.end()); -} - - -template -MPT_CONSTEXPRINLINE unsigned char char_value(T x) noexcept = delete; -template <> -MPT_CONSTEXPRINLINE unsigned char char_value(char x) noexcept -{ - return static_cast(x); -} -template <> -MPT_CONSTEXPRINLINE unsigned char char_value(unsigned char x) noexcept -{ - return static_cast(x); -} -#if MPT_CXX_AT_LEAST(20) -template <> -MPT_CONSTEXPRINLINE unsigned char char_value(char8_t x) noexcept -{ - return static_cast(x); -} -#endif // C++20 - - -// string_traits abstract the API of underlying string classes, in particular they allow adopting to CString without having to specialize for CString explicitly - -template -struct string_traits -{ - - using string_type = Tstring; - using size_type = typename string_type::size_type; - using char_type = typename string_type::value_type; - - static inline std::size_t length(const string_type &str) { return str.length(); } - - static inline void reserve(string_type &str, std::size_t size) { str.reserve(size); } - - static inline string_type& append(string_type &str, const string_type &a) { return str.append(a); } - static inline string_type& append(string_type &str, string_type &&a) { return str.append(std::move(a)); } - static inline string_type& append(string_type &str, std::size_t count, char_type c) { return str.append(count, c); } - - static inline string_type pad(string_type str, std::size_t left, std::size_t right) - { - str.insert(str.begin(), left, char_type(' ')); - str.insert(str.end(), right, char_type(' ')); - return str; - } - -}; - -#if defined(MPT_WITH_MFC) -template <> -struct string_traits -{ - - using string_type = CString; - using size_type = int; - using char_type = typename CString::XCHAR; - - static inline size_type length(const string_type &str) { return str.GetLength(); } - - static inline void reserve(string_type &str, size_type size) { str.Preallocate(size); } - - static inline string_type& append(string_type &str, const string_type &a) { str += a; return str; } - static inline string_type& append(string_type &str, size_type count, char_type c) { while(count--) str.AppendChar(c); return str; } - - static inline string_type pad(const string_type &str, size_type left, size_type right) - { - CString tmp; - while(left--) tmp.AppendChar(char_type(' ')); - tmp += str; - while(right--) tmp.AppendChar(char_type(' ')); - return tmp; - } - -}; -#endif // MPT_WITH_MFC - - - namespace String { template struct Traits { - static MPT_FORCEINLINE const char * GetDefaultWhitespace() noexcept { return " \n\r\t"; } static MPT_FORCEINLINE bool IsLineEnding(char c) noexcept { return c == '\r' || c == '\n'; } }; template <> struct Traits { - static MPT_FORCEINLINE const char * GetDefaultWhitespace() noexcept { return " \n\r\t"; } static MPT_FORCEINLINE bool IsLineEnding(char c) noexcept { return c == '\r' || c == '\n'; } }; #if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) template <> struct Traits { - static MPT_FORCEINLINE const wchar_t * GetDefaultWhitespace() noexcept { return L" \n\r\t"; } static MPT_FORCEINLINE bool IsLineEnding(wchar_t c) noexcept { return c == L'\r' || c == L'\n'; } }; #endif // !MPT_COMPILER_QUIRK_NO_WCHAR @@ -179,41 +59,23 @@ // Remove whitespace at start of string template -inline Tstring LTrim(Tstring str, const Tstring &whitespace = Tstring(mpt::String::Traits::GetDefaultWhitespace())) +inline Tstring LTrim(Tstring str, const Tstring & whitespace = mpt::default_whitespace()) { - typename Tstring::size_type pos = str.find_first_not_of(whitespace); - if(pos != Tstring::npos) - { - str.erase(str.begin(), str.begin() + pos); - } else if(pos == Tstring::npos && str.length() > 0 && str.find_last_of(whitespace) == str.length() - 1) - { - return Tstring(); - } - return str; + return mpt::trim_left(str, whitespace); } - // Remove whitespace at end of string template -inline Tstring RTrim(Tstring str, const Tstring &whitespace = Tstring(mpt::String::Traits::GetDefaultWhitespace())) +inline Tstring RTrim(Tstring str, const Tstring& whitespace = mpt::default_whitespace()) { - typename Tstring::size_type pos = str.find_last_not_of(whitespace); - if(pos != Tstring::npos) - { - str.erase(str.begin() + pos + 1, str.end()); - } else if(pos == Tstring::npos && str.length() > 0 && str.find_first_of(whitespace) == 0) - { - return Tstring(); - } - return str; + return mpt::trim_right(str, whitespace); } - // Remove whitespace at start and end of string template -inline Tstring Trim(Tstring str, const Tstring &whitespace = Tstring(mpt::String::Traits::GetDefaultWhitespace())) +inline Tstring Trim(Tstring str, const Tstring& whitespace = mpt::default_whitespace()) { - return RTrim(LTrim(str, whitespace), whitespace); + return mpt::trim(str, whitespace); } @@ -308,83 +170,7 @@ bool IsUTF8(const std::string &str); -#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) -using wstring = std::wstring; -using wchar = wchar_t; -#define MPT_WCHAR(x) L ## x -#define MPT_WLITERAL(x) L ## x -#define MPT_WSTRING(x) std::wstring( L ## x ) -#else // MPT_COMPILER_QUIRK_NO_WCHAR -using wstring = std::u32string; -using wchar = char32_t; -#define MPT_WCHAR(x) U ## x -#define MPT_WLITERAL(x) U ## x -#define MPT_WSTRING(x) std::u32string( U ## x ) -#endif // !MPT_COMPILER_QUIRK_NO_WCHAR - -template -struct charset_char_traits : std::char_traits { - static constexpr mpt::Charset charset() noexcept { return charset_tag; } -}; - - -#if defined(MPT_ENABLE_CHARSET_LOCALE) - -using lstring = std::basic_string>; - -#endif // MPT_ENABLE_CHARSET_LOCALE - -#if MPT_OS_WINDOWS - -template struct windows_char_traits { }; -template <> struct windows_char_traits { using string_type = mpt::lstring; }; -template <> struct windows_char_traits { using string_type = std::wstring; }; - -#ifdef UNICODE -using tstring = windows_char_traits::string_type; -#else -using tstring = windows_char_traits::string_type; -#endif - -using winstring = mpt::tstring; - -#endif // MPT_OS_WINDOWS - - -#if MPT_CXX_AT_LEAST(20) - -using u8string = std::u8string; -using u8char = char8_t; -#define MPT_U8CHAR(x) u8 ## x -#define MPT_U8LITERAL(x) u8 ## x -#define MPT_U8STRING(x) std::u8string( u8 ## x ) - -#else // !C++20 - -using u8string = std::basic_string>; -using u8char = char; -#define MPT_U8CHAR(x) x -#define MPT_U8LITERAL(x) x -#define MPT_U8STRING(x) mpt::u8string( x ) - -// mpt::u8string is a moderately type-safe string that is meant to contain -// UTF-8 encoded char bytes. -// -// mpt::u8string is not implicitely convertible to/from std::string, but -// it is convertible to/from C strings the same way as std::string is. -// -// The implementation of mpt::u8string is a compromise of compatibilty -// with implementation-defined STL details, efficiency, source code size, -// executable bloat, type-safety and simplicity. -// -// mpt::u8string is not meant to be used directly though. -// mpt::u8string is meant as an alternative implementaion to std::wstring -// for implementing the unicode string type mpt::ustring. - -#endif // C++20 - - #if MPT_WSTRING_CONVERT // Convert to a wide character string. // The wide encoding is UTF-16 or UTF-32, based on sizeof(wchar_t). @@ -468,57 +254,13 @@ #endif // MPT_WITH_MFC -// mpt::ustring -// -// mpt::ustring is a string type that can hold unicode strings. -// It is implemented as a std::basic_string either based on wchar_t (i.e. the -// same as std::wstring) or a custom-defined char_traits class that is derived -// from std::char_traits. -// The selection of the underlying implementation is done at compile-time. -// MPT_UCHAR, MPT_ULITERAL and MPT_USTRING are macros that ease construction -// of ustring char literals, ustring char array literals and ustring objects -// from ustring char literals that work consistently in both modes. -// Note that these are not supported for non-ASCII characters appearing in -// the macro argument. -// Also note that, as both UTF8 and UTF16 (it is less of an issue for UTF32) -// are variable-length encodings and mpt::ustring is implemented as a -// std::basic_string, all member functions that require individual character -// access will not work consistently or even at all in a meaningful way. -// This in particular affects operator[], find() and substr(). -// The code makes no effort in preventing these or generating warnings when -// these are used on mpt::ustring objects. However, compiling in the -// respectively other mpt::ustring mode will catch most of these anyway. -#if MPT_USTRING_MODE_WIDE -#if MPT_USTRING_MODE_UTF8 -#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." -#endif - -using ustring = std::wstring; -using uchar = wchar_t; -#define MPT_UCHAR(x) L ## x -#define MPT_ULITERAL(x) L ## x -#define MPT_USTRING(x) std::wstring( L ## x ) - -#endif // MPT_USTRING_MODE_WIDE - -#if MPT_USTRING_MODE_UTF8 -#if MPT_USTRING_MODE_WIDE -#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." -#endif - -using ustring = mpt::u8string; -using uchar = mpt::u8char; -#define MPT_UCHAR(x) MPT_U8CHAR( x ) -#define MPT_ULITERAL(x) MPT_U8LITERAL( x ) -#define MPT_USTRING(x) MPT_U8STRING( x ) - -#endif // MPT_USTRING_MODE_UTF8 - #define UC_(x) MPT_UCHAR(x) #define UL_(x) MPT_ULITERAL(x) #define U_(x) MPT_USTRING(x) + + #if MPT_USTRING_MODE_WIDE #if !(MPT_WSTRING_CONVERT) #error "MPT_USTRING_MODE_WIDE depends on MPT_WSTRING_CONVERT)" @@ -570,12 +312,16 @@ #endif // MPT_WITH_MFC #endif // MPT_USTRING_MODE_WIDE + + + + // The MPT_UTF8 allows specifying UTF8 char arrays. // The resulting type is mpt::ustring and the construction might require runtime translation, // i.e. it is NOT generally available at compile time. // Use explicit UTF8 encoding, // i.e. U+00FC (LATIN SMALL LETTER U WITH DIAERESIS) would be written as "\xC3\xBC". -#define MPT_UTF8(x) mpt::ToUnicode(mpt::Charset::UTF8, x ) +#define MPT_UTF8(x) mpt::ToUnicode(mpt::Charset::UTF8, x) Index: common/mptStringBuffer.h =================================================================== --- common/mptStringBuffer.h (revision 14776) +++ common/mptStringBuffer.h (working copy) @@ -13,6 +13,8 @@ #include "BuildSettings.h" +#include "mpt/string/buffer.hpp" + #include "mptMemory.h" #include "mptString.h" @@ -63,184 +65,17 @@ -template -class StringBufRefImpl -{ -private: - Tchar * buf; - std::size_t size; -public: - // cppcheck false-positive - // cppcheck-suppress uninitMemberVar - explicit StringBufRefImpl(Tchar * buf_, std::size_t size_) - : buf(buf_) - , size(size_) - { - static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); - MPT_ASSERT(size > 0); - } - StringBufRefImpl(const StringBufRefImpl &) = delete; - StringBufRefImpl(StringBufRefImpl &&) = default; - StringBufRefImpl & operator = (const StringBufRefImpl &) = delete; - StringBufRefImpl & operator = (StringBufRefImpl &&) = delete; - operator Tstring () const - { - std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 - return Tstring(buf, buf + len); - } - bool empty() const - { - return buf[0] == Tchar('\0'); - } - StringBufRefImpl & operator = (const Tstring & str) - { - std::copy(str.data(), str.data() + std::min(str.length(), size - 1), buf); - std::fill(buf + std::min(str.length(), size - 1), buf + size, Tchar('\0')); - return *this; - } -}; - -template -class StringBufRefImpl -{ -private: - const Tchar * buf; - std::size_t size; -public: - // cppcheck false-positive - // cppcheck-suppress uninitMemberVar - explicit StringBufRefImpl(const Tchar * buf_, std::size_t size_) - : buf(buf_) - , size(size_) - { - static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); - MPT_ASSERT(size > 0); - } - StringBufRefImpl(const StringBufRefImpl &) = delete; - StringBufRefImpl(StringBufRefImpl &&) = default; - StringBufRefImpl & operator = (const StringBufRefImpl &) = delete; - StringBufRefImpl & operator = (StringBufRefImpl &&) = delete; - operator Tstring () const - { - std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 - return Tstring(buf, buf + len); - } - bool empty() const - { - return buf[0] == Tchar('\0'); - } -}; - namespace String { -template -inline StringBufRefImpl::type> ReadTypedBuf(const std::array &buf) -{ - return StringBufRefImpl::type>(buf.data(), size); -} -template -inline StringBufRefImpl::type> ReadTypedBuf(const Tchar (&buf)[size]) -{ - return StringBufRefImpl::type>(buf, size); -} -template -inline StringBufRefImpl::type> ReadTypedBuf(const Tchar * buf, std::size_t size) -{ - return StringBufRefImpl::type>(buf, size); -} -template -inline StringBufRefImpl WriteTypedBuf(std::array &buf) -{ - return StringBufRefImpl(buf.data(), size); -} -template -inline StringBufRefImpl WriteTypedBuf(Tchar (&buf)[size]) -{ - return StringBufRefImpl(buf, size); -} -template -inline StringBufRefImpl WriteTypedBuf(Tchar * buf, std::size_t size) -{ - return StringBufRefImpl(buf, size); -} +using mpt::ReadTypedBuf; +using mpt::WriteTypedBuf; } // namespace String namespace String { -template -inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const std::array &buf) -{ - return StringBufRefImpl::type>, typename std::add_const::type>(buf.data(), size); -} -template -inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar (&buf)[size]) -{ - return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); -} -template -inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar * buf, std::size_t size) -{ - return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); -} -template -inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(std::array &buf) -{ - return StringBufRefImpl::type>, Tchar>(buf.data(), size); -} -template -inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar (&buf)[size]) -{ - return StringBufRefImpl::type>, Tchar>(buf, size); -} -template -inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar * buf, std::size_t size) -{ - return StringBufRefImpl::type>, Tchar>(buf, size); -} +using mpt::ReadAutoBuf; +using mpt::WriteAutoBuf; } // namespace String -template (0)> struct charbuf; -template -struct charbuf(0)> -{ -public: - typedef char Tchar; - using char_type = Tchar; - using string_type = std::basic_string; - constexpr std::size_t static_length() const { return len; } -public: - Tchar buf[len]; -public: - charbuf() - { - Clear(buf); - } - charbuf(const charbuf &) = default; - charbuf(charbuf &&) = default; - charbuf & operator = (const charbuf &) = default; - charbuf & operator = (charbuf &&) = default; - const Tchar & operator[](std::size_t i) const { return buf[i]; } - std::string str() const { return static_cast(*this); } - operator string_type () const - { - return mpt::String::ReadAutoBuf(buf); - } - bool empty() const - { - return mpt::String::ReadAutoBuf(buf).empty(); - } - charbuf & operator = (const string_type & str) - { - mpt::String::WriteAutoBuf(buf) = str; - return *this; - } -public: - friend bool operator!=(const std::string & a, const charbuf & b) { return a != b.str(); } - friend bool operator!=(const charbuf & a, const std::string & b) { return a.str() != b; } - friend bool operator!=(const charbuf & a, const charbuf & b) { return strncmp(a.buf, b.buf, len) != 0; } - friend bool operator==(const std::string & a, const charbuf & b) { return a == b.str(); } - friend bool operator==(const charbuf & a, const std::string & b) { return a.str() == b; } - friend bool operator==(const charbuf & a, const charbuf & b) { return strncmp(a.buf, b.buf, len) == 0; } -}; template class StringModeBufRefImpl @@ -343,7 +178,7 @@ } // namespace String template -struct charbuf +struct modecharbuf { public: typedef char Tchar; @@ -352,11 +187,11 @@ public: Tchar buf[len]; public: - charbuf() = default; - charbuf(const charbuf &) = default; - charbuf(charbuf &&) = default; - charbuf & operator = (const charbuf &) = default; - charbuf & operator = (charbuf &&) = default; + modecharbuf() = default; + modecharbuf(const modecharbuf &) = default; + modecharbuf(modecharbuf &&) = default; + modecharbuf & operator = (const modecharbuf &) = default; + modecharbuf & operator = (modecharbuf &&) = default; operator string_type () const { return mpt::String::ReadBuf(mode, buf); @@ -365,7 +200,7 @@ { return mpt::String::ReadBuf(mode, buf).empty(); } - charbuf & operator = (const string_type & str) + modecharbuf & operator = (const string_type & str) { mpt::String::WriteBuf(mode, buf) = str; return *this; @@ -375,12 +210,11 @@ // see MPT_BINARY_STRUCT template -struct is_binary_safe> : public std::true_type { }; -template -struct is_binary_safe(0)>> : public std::false_type { }; -static_assert(sizeof(mpt::charbuf<7>) == 7); -static_assert(alignof(mpt::charbuf<7>) == 1); -static_assert(std::is_standard_layout>::value); +constexpr bool declare_binary_safe(const typename mpt::modecharbuf &) { return true; } +//struct is_binary_safe> : public std::true_type { }; +static_assert(sizeof(mpt::modecharbuf<7, mpt::String::ReadWriteMode::nullTerminated>) == 7); +static_assert(alignof(mpt::modecharbuf<7, mpt::String::ReadWriteMode::nullTerminated>) == 1); +static_assert(std::is_standard_layout>::value); #ifdef MODPLUG_TRACKER @@ -388,129 +222,15 @@ #if MPT_OS_WINDOWS namespace String { -template -inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const std::array &buf) -{ - return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf.data(), size); -} -template -inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar (&buf)[size]) -{ - return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); -} -template -inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar * buf, std::size_t size) -{ - return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); -} -template -inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(std::array &buf) -{ - return StringBufRefImpl::type>::string_type, Tchar>(buf.data(), size); -} -template -inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar (&buf)[size]) -{ - return StringBufRefImpl::type>::string_type, Tchar>(buf, size); -} -template -inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar * buf, std::size_t size) -{ - return StringBufRefImpl::type>::string_type, Tchar>(buf, size); -} +using mpt::ReadWinBuf; +using mpt::WriteWinBuf; } // namespace String #if defined(MPT_WITH_MFC) -template -class CStringBufRefImpl -{ -private: - Tchar * buf; - std::size_t size; -public: - // cppcheck false-positive - // cppcheck-suppress uninitMemberVar - explicit CStringBufRefImpl(Tchar * buf_, std::size_t size_) - : buf(buf_) - , size(size_) - { - MPT_ASSERT(size > 0); - } - CStringBufRefImpl(const CStringBufRefImpl &) = delete; - CStringBufRefImpl(CStringBufRefImpl &&) = default; - CStringBufRefImpl & operator = (const CStringBufRefImpl &) = delete; - CStringBufRefImpl & operator = (CStringBufRefImpl &&) = delete; - operator CString () const - { - std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 - return CString(buf, mpt::saturate_cast(len)); - } - CStringBufRefImpl & operator = (const CString & str) - { - std::copy(str.GetString(), str.GetString() + std::min(static_cast(str.GetLength()), size - 1), buf); - std::fill(buf + std::min(static_cast(str.GetLength()), size - 1), buf + size, Tchar('\0')); - return *this; - } -}; - -template -class CStringBufRefImpl -{ -private: - const Tchar * buf; - std::size_t size; -public: - // cppcheck false-positive - // cppcheck-suppress uninitMemberVar - explicit CStringBufRefImpl(const Tchar * buf_, std::size_t size_) - : buf(buf_) - , size(size_) - { - MPT_ASSERT(size > 0); - } - CStringBufRefImpl(const CStringBufRefImpl &) = delete; - CStringBufRefImpl(CStringBufRefImpl &&) = default; - CStringBufRefImpl & operator = (const CStringBufRefImpl &) = delete; - CStringBufRefImpl & operator = (CStringBufRefImpl &&) = delete; - operator CString () const - { - std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 - return CString(buf, mpt::saturate_cast(len)); - } -}; - namespace String { -template -inline CStringBufRefImpl::type> ReadCStringBuf(const std::array &buf) -{ - return CStringBufRefImpl::type>(buf.data(), size); -} -template -inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar (&buf)[size]) -{ - return CStringBufRefImpl::type>(buf, size); -} -template -inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar * buf, std::size_t size) -{ - return CStringBufRefImpl::type>(buf, size); -} -template -inline CStringBufRefImpl WriteCStringBuf(std::array &buf) -{ - return CStringBufRefImpl(buf.data(), size); -} -template -inline CStringBufRefImpl WriteCStringBuf(Tchar (&buf)[size]) -{ - return CStringBufRefImpl(buf, size); -} -template -inline CStringBufRefImpl WriteCStringBuf(Tchar * buf, std::size_t size) -{ - return CStringBufRefImpl(buf, size); -} +using mpt::ReadCStringBuf; +using mpt::WriteCStringBuf; } // namespace String #endif // MPT_WITH_MFC Index: common/mptStringFormat.cpp =================================================================== --- common/mptStringFormat.cpp (revision 14776) +++ common/mptStringFormat.cpp (working copy) @@ -10,194 +10,37 @@ #include "stdafx.h" #include "mptStringFormat.h" -#if MPT_MSVC_AT_LEAST(2019,4) || MPT_GCC_AT_LEAST(11,1,0) -#define MPT_FORMAT_CXX17_FLOAT 1 -#else -#define MPT_FORMAT_CXX17_FLOAT 0 -#endif +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/default_integer.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_floatingpoint.hpp" +#include "mpt/format/simple_integer.hpp" -#include -#include -#if MPT_FORMAT_CXX17_FLOAT -#include -#endif // MPT_FORMAT_CXX17_FLOAT -#include -#include -#include -#include - OPENMPT_NAMESPACE_BEGIN - namespace mpt { -#if MPT_WSTRING_FORMAT -static std::wstring ToWideSimple(const std::string &nstr) -{ - std::wstring wstr(nstr.size(), L'\0'); - for(std::size_t i = 0; i < nstr.size(); ++i) - { - wstr[i] = static_cast(nstr[i]); - } - return wstr; -} -#endif // MPT_WSTRING_FORMAT +std::string ToString(const bool & x) { return mpt::format_value_default(x); } +std::string ToString(const signed char & x) { return mpt::format_value_default(x); } +std::string ToString(const unsigned char & x) { return mpt::format_value_default(x); } +std::string ToString(const signed short & x) { return mpt::format_value_default(x); } +std::string ToString(const unsigned short & x) { return mpt::format_value_default(x); } +std::string ToString(const signed int & x) { return mpt::format_value_default(x); } +std::string ToString(const unsigned int & x) { return mpt::format_value_default(x); } +std::string ToString(const signed long & x) { return mpt::format_value_default(x); } +std::string ToString(const unsigned long & x) { return mpt::format_value_default(x); } +std::string ToString(const signed long long & x) { return mpt::format_value_default(x); } +std::string ToString(const unsigned long long & x) { return mpt::format_value_default(x); } +std::string ToString(const float & x) { return mpt::format_value_default(x); } +std::string ToString(const double & x) { return mpt::format_value_default(x); } +std::string ToString(const long double & x) { return mpt::format_value_default(x); } -template -static inline std::string ToCharsInt(const T & x, int base = 10) -{ - std::string str(1, '\0'); - bool done = false; - while(!done) - { - std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, base); - if(result.ec != std::errc{}) - { - str.resize(Util::ExponentialGrow(str.size()), '\0'); - } else - { - str.resize(result.ptr - str.data()); - done = true; - } - } - return str; -} - -template -static inline std::string ToStringHelperInt(const T & x) -{ - return ToCharsInt(x); -} - #if MPT_WSTRING_FORMAT -template -static inline std::wstring ToWStringHelperInt(const T & x) -{ - return ToWideSimple(ToCharsInt(x)); -} -#endif - -#if MPT_FORMAT_CXX17_FLOAT - -template -static inline std::string ToCharsFloat(const T & x) -{ - std::string str(1, '\0'); - bool done = false; - while(!done) - { - std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); - if(result.ec != std::errc{}) - { - str.resize(Util::ExponentialGrow(str.size()), '\0'); - } else - { - str.resize(result.ptr - str.data()); - done = true; - } - } - return str; -} - -template -static inline std::string ToCharsFloat(const T & x, std::chars_format fmt) -{ - std::string str(1, '\0'); - bool done = false; - while(!done) - { - std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt); - if(result.ec != std::errc{}) - { - str.resize(Util::ExponentialGrow(str.size()), '\0'); - } else - { - str.resize(result.ptr - str.data()); - done = true; - } - } - return str; -} - -template -static inline std::string ToCharsFloat(const T & x, std::chars_format fmt, int precision) -{ - std::string str(1, '\0'); - bool done = false; - while(!done) - { - std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt, precision); - if(result.ec != std::errc{}) - { - str.resize(Util::ExponentialGrow(str.size()), '\0'); - } else - { - str.resize(result.ptr - str.data()); - done = true; - } - } - return str; -} - -template -static inline std::string ToStringHelperFloat(const T & x) -{ - return ToCharsFloat(x); -} - -#if MPT_WSTRING_FORMAT -template -static inline std::wstring ToWStringHelperFloat(const T & x) -{ - return ToWideSimple(ToCharsFloat(x)); -} -#endif - -#else // !MPT_FORMAT_CXX17_FLOAT - -template -static inline std::string ToStringHelperFloat(const T & x) -{ - std::ostringstream o; - o.imbue(std::locale::classic()); - o << std::setprecision(std::numeric_limits::max_digits10) << x; - return o.str(); -} - -#if MPT_WSTRING_FORMAT -template -static inline std::wstring ToWStringHelperFloat(const T & x) -{ - std::wostringstream o; - o.imbue(std::locale::classic()); - o << std::setprecision(std::numeric_limits::max_digits10) << x; - return o.str(); -} -#endif - -#endif // MPT_FORMAT_CXX17_FLOAT - -std::string ToString(const bool & x) { return ToStringHelperInt(static_cast(x)); } -std::string ToString(const signed char & x) { return ToStringHelperInt(x); } -std::string ToString(const unsigned char & x) { return ToStringHelperInt(x); } -std::string ToString(const signed short & x) { return ToStringHelperInt(x); } -std::string ToString(const unsigned short & x) { return ToStringHelperInt(x); } -std::string ToString(const signed int & x) { return ToStringHelperInt(x); } -std::string ToString(const unsigned int & x) { return ToStringHelperInt(x); } -std::string ToString(const signed long & x) { return ToStringHelperInt(x); } -std::string ToString(const unsigned long & x) { return ToStringHelperInt(x); } -std::string ToString(const signed long long & x) { return ToStringHelperInt(x); } -std::string ToString(const unsigned long long & x) { return ToStringHelperInt(x); } -std::string ToString(const float & x) { return ToStringHelperFloat(x); } -std::string ToString(const double & x) { return ToStringHelperFloat(x); } -std::string ToString(const long double & x) { return ToStringHelperFloat(x); } - -#if MPT_WSTRING_FORMAT #if MPT_USTRING_MODE_UTF8 mpt::ustring ToUString(const std::wstring & x) { return mpt::ToUnicode(x); } #endif @@ -207,36 +50,36 @@ mpt::ustring ToUString(const CString & x) { return mpt::ToUnicode(x); } #endif // MPT_WITH_MFC #if MPT_USTRING_MODE_WIDE -mpt::ustring ToUString(const bool & x) { return ToWStringHelperInt(static_cast(x)); } -mpt::ustring ToUString(const signed char & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const unsigned char & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const signed short & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const unsigned short & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const signed int & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const unsigned int & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const signed long & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const unsigned long & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const signed long long & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const unsigned long long & x) { return ToWStringHelperInt(x); } -mpt::ustring ToUString(const float & x) { return ToWStringHelperFloat(x); } -mpt::ustring ToUString(const double & x) { return ToWStringHelperFloat(x); } -mpt::ustring ToUString(const long double & x) { return ToWStringHelperFloat(x); } +mpt::ustring ToUString(const bool & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed char & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned char & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed short & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned short & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed int & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned int & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed long long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned long long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const float & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const double & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const long double & x) { return mpt::format_value_default(x); } #endif #if MPT_USTRING_MODE_UTF8 -mpt::ustring ToUString(const bool & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(static_cast(x))); } -mpt::ustring ToUString(const signed char & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const unsigned char & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const signed short & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const unsigned short & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const signed int & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const unsigned int & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const signed long & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const unsigned long & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const signed long long & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const unsigned long long & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperInt(x)); } -mpt::ustring ToUString(const float & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperFloat(x)); } -mpt::ustring ToUString(const double & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperFloat(x)); } -mpt::ustring ToUString(const long double & x) { return mpt::ToUnicode(mpt::Charset::UTF8, ToStringHelperFloat(x)); } +mpt::ustring ToUString(const bool & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed char & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned char & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed short & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned short & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed int & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned int & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const signed long long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const unsigned long long & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const float & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const double & x) { return mpt::format_value_default(x); } +mpt::ustring ToUString(const long double & x) { return mpt::format_value_default(x); } #endif #if MPT_WSTRING_FORMAT @@ -246,386 +89,87 @@ #if defined(MPT_WITH_MFC) std::wstring ToWString(const CString & x) { return mpt::ToWide(x); } #endif // MPT_WITH_MFC -std::wstring ToWString(const bool & x) { return ToWStringHelperInt(static_cast(x)); } -std::wstring ToWString(const signed char & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const unsigned char & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const signed short & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const unsigned short & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const signed int & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const unsigned int & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const signed long & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const unsigned long & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const signed long long & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const unsigned long long & x) { return ToWStringHelperInt(x); } -std::wstring ToWString(const float & x) { return ToWStringHelperFloat(x); } -std::wstring ToWString(const double & x) { return ToWStringHelperFloat(x); } -std::wstring ToWString(const long double & x) { return ToWStringHelperFloat(x); } +std::wstring ToWString(const bool & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const signed char & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const unsigned char & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const signed short & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const unsigned short & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const signed int & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const unsigned int & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const signed long & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const unsigned long & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const signed long long & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const unsigned long long & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const float & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const double & x) { return mpt::format_value_default(x); } +std::wstring ToWString(const long double & x) { return mpt::format_value_default(x); } #endif -template -struct NumPunct : std::numpunct -{ -private: - unsigned int group; - char sep; -public: - NumPunct(unsigned int g, char s) - : group(g) - , sep(s) - {} - std::string do_grouping() const override - { - return std::string(1, static_cast(group)); - } - Tchar do_thousands_sep() const override - { - return static_cast(sep); - } -}; -template -static inline void ApplyFormat(Tostream & o, const FormatSpec & format, const T &) -{ - if constexpr(!std::numeric_limits::is_integer) - { - if(format.GetGroup() > 0) - { - o.imbue(std::locale(o.getloc(), new NumPunct(format.GetGroup(), format.GetGroupSep()))); - } - } - FormatFlags f = format.GetFlags(); - std::size_t width = format.GetWidth(); - int precision = format.GetPrecision(); - if(precision != -1 && width != 0 && !(f & fmt_base::NotaFix) && !(f & fmt_base::NotaSci)) - { - // fixup: - // precision behaves differently from .# - // avoid default format when precision and width are set - f &= ~fmt_base::NotaNrm; - f |= fmt_base::NotaFix; - } - if(f & fmt_base::BaseDec) { o << std::dec; } - else if(f & fmt_base::BaseHex) { o << std::hex; } - if(f & fmt_base::NotaNrm ) { /*nothing*/ } - else if(f & fmt_base::NotaFix ) { o << std::setiosflags(std::ios::fixed); } - else if(f & fmt_base::NotaSci ) { o << std::setiosflags(std::ios::scientific); } - if(f & fmt_base::CaseLow) { o << std::nouppercase; } - else if(f & fmt_base::CaseUpp) { o << std::uppercase; } - if constexpr(!std::numeric_limits::is_integer) - { - if(f & fmt_base::FillOff) { /* nothing */ } - else if(f & fmt_base::FillNul) { o << std::setw(width) << std::setfill(typename Tostream::char_type('0')); } - } - if(precision != -1) - { - o << std::setprecision(precision); - } else - { - if constexpr(std::is_floating_point::value) - { - if(f & fmt_base::NotaNrm) - { - o << std::setprecision(std::numeric_limits::max_digits10); - } else if(f & fmt_base::NotaFix) - { - o << std::setprecision(std::numeric_limits::digits10); - } else if(f & fmt_base::NotaSci) - { - o << std::setprecision(std::numeric_limits::max_digits10 - 1); - } else - { - o << std::setprecision(std::numeric_limits::max_digits10); - } - } - } -} +std::string FormatVal(const bool & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const signed char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const unsigned char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const signed short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const unsigned short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const signed int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const unsigned int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const signed long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const unsigned long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const signed long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const unsigned long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const float & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::string FormatVal(const long double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } -template -static inline Tstring PostProcessCase(Tstring str, const FormatSpec & format) -{ - FormatFlags f = format.GetFlags(); - if(f & fmt_base::CaseUpp) - { - for(auto & c : str) - { - if('a' <= c && c <= 'z') - { - c -= 'a' - 'A'; - } - } - } - return str; -} - -template -static inline Tstring PostProcessDigits(Tstring str, const FormatSpec & format) -{ - FormatFlags f = format.GetFlags(); - std::size_t width = format.GetWidth(); - if(f & fmt_base::FillNul) - { - auto pos = str.begin(); - if(str.length() > 0) - { - if(str[0] == typename Tstring::value_type('+')) - { - pos++; - width++; - } else if(str[0] == typename Tstring::value_type('-')) - { - pos++; - width++; - } - } - if(str.length() < width) - { - str.insert(pos, width - str.length(), '0'); - } - } - return str; -} - -#if MPT_FORMAT_CXX17_FLOAT - -template -static inline Tstring PostProcessFloatWidth(Tstring str, const FormatSpec & format) -{ - FormatFlags f = format.GetFlags(); - std::size_t width = format.GetWidth(); - if(f & fmt_base::FillNul) - { - auto pos = str.begin(); - if(str.length() > 0) - { - if(str[0] == typename Tstring::value_type('+')) - { - pos++; - width++; - } else if(str[0] == typename Tstring::value_type('-')) - { - pos++; - width++; - } - } - if(str.length() - std::distance(str.begin(), pos) < width) - { - str.insert(pos, width - str.length() - std::distance(str.begin(), pos), '0'); - } - } else - { - if(str.length() < width) - { - str.insert(0, width - str.length(), ' '); - } - } - return str; -} - -#endif // MPT_FORMAT_CXX17_FLOAT - -#if MPT_COMPILER_MSVC -#pragma warning(push) -#pragma warning(disable:4723) // potential divide by 0 -#endif // MPT_COMPILER_MSVC -template -static inline Tstring PostProcessGroup(Tstring str, const FormatSpec & format) -{ - if(format.GetGroup() > 0) - { - const unsigned int groupSize = format.GetGroup(); - const char groupSep = format.GetGroupSep(); - std::size_t len = str.length(); - for(std::size_t n = 0; n < len; ++n) - { - if(n > 0 && (n % groupSize) == 0) - { - if(!(n == (len - 1) && (str[0] == typename Tstring::value_type('+') || str[0] == typename Tstring::value_type('-')))) - { - str.insert(str.begin() + (len - n), 1, groupSep); - } - } - } - } - return str; -} -#if MPT_COMPILER_MSVC -#pragma warning(pop) -#endif // MPT_COMPILER_MSVC - -template -static inline std::string FormatValHelperInt(const T & x, const FormatSpec & f) -{ - int base = 10; - if(f.GetFlags() & fmt_base::BaseDec) { base = 10; } - if(f.GetFlags() & fmt_base::BaseHex) { base = 16; } - return PostProcessGroup(PostProcessDigits(PostProcessCase(ToCharsInt(x, base), f), f), f); -} - -#if MPT_WSTRING_FORMAT -template -static inline std::wstring FormatValWHelperInt(const T & x, const FormatSpec & f) -{ - int base = 10; - if(f.GetFlags() & fmt_base::BaseDec) { base = 10; } - if(f.GetFlags() & fmt_base::BaseHex) { base = 16; } - return ToWideSimple(PostProcessGroup(PostProcessDigits(PostProcessCase(ToCharsInt(x, base), f), f), f)); -} -#endif - -#if MPT_FORMAT_CXX17_FLOAT - -template -static inline std::string FormatValHelperFloat(const T & x, const FormatSpec & f) -{ - if(f.GetPrecision() != -1) - { - if(f.GetFlags() & fmt_base::NotaSci) - { - return PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::scientific, f.GetPrecision()), f); - } else if(f.GetFlags() & fmt_base::NotaFix) - { - return PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::fixed, f.GetPrecision()), f); - } else - { - return PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::general, f.GetPrecision()), f); - } - } else - { - if(f.GetFlags() & fmt_base::NotaSci) - { - return PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::scientific), f); - } else if(f.GetFlags() & fmt_base::NotaFix) - { - return PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::fixed), f); - } else - { - return PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::general), f); - } - } -} - -#if MPT_WSTRING_FORMAT -template -static inline std::wstring FormatValWHelperFloat(const T & x, const FormatSpec & f) -{ - if(f.GetPrecision() != -1) - { - if(f.GetFlags() & fmt_base::NotaSci) - { - return ToWideSimple(PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::scientific, f.GetPrecision()), f)); - } else if(f.GetFlags() & fmt_base::NotaFix) - { - return ToWideSimple(PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::fixed, f.GetPrecision()), f)); - } else - { - return ToWideSimple(PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::general, f.GetPrecision()), f)); - } - } else - { - if(f.GetFlags() & fmt_base::NotaSci) - { - return ToWideSimple(PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::scientific), f)); - } else if(f.GetFlags() & fmt_base::NotaFix) - { - return ToWideSimple(PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::fixed), f)); - } else - { - return ToWideSimple(PostProcessFloatWidth(ToCharsFloat(x, std::chars_format::general), f)); - } - } -} -#endif - -#else // !MPT_FORMAT_CXX17_FLOAT - -template -static inline std::string FormatValHelperFloat(const T & x, const FormatSpec & f) -{ - std::ostringstream o; - o.imbue(std::locale::classic()); - ApplyFormat(o, f, x); - o << x; - return o.str(); -} - -#if MPT_WSTRING_FORMAT -template -static inline std::wstring FormatValWHelperFloat(const T & x, const FormatSpec & f) -{ - std::wostringstream o; - o.imbue(std::locale::classic()); - ApplyFormat(o, f, x); - o << x; - return o.str(); -} -#endif - -#endif // MPT_FORMAT_CXX17_FLOAT - -std::string FormatVal(const bool & x, const FormatSpec & f) { return FormatValHelperInt(static_cast(x), f); } -std::string FormatVal(const signed char & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const unsigned char & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const signed short & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const unsigned short & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const signed int & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const unsigned int & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const signed long & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const unsigned long & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const signed long long & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const unsigned long long & x, const FormatSpec & f) { return FormatValHelperInt(x, f); } -std::string FormatVal(const float & x, const FormatSpec & f) { return FormatValHelperFloat(x, f); } -std::string FormatVal(const double & x, const FormatSpec & f) { return FormatValHelperFloat(x, f); } -std::string FormatVal(const long double & x, const FormatSpec & f) { return FormatValHelperFloat(x, f); } - #if MPT_USTRING_MODE_WIDE -mpt::ustring FormatValU(const bool & x, const FormatSpec & f) { return FormatValWHelperInt(static_cast(x), f); } -mpt::ustring FormatValU(const signed char & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const unsigned char & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const signed short & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const unsigned short & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const signed int & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const unsigned int & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const signed long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const unsigned long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const signed long long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const unsigned long long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -mpt::ustring FormatValU(const float & x, const FormatSpec & f) { return FormatValWHelperFloat(x, f); } -mpt::ustring FormatValU(const double & x, const FormatSpec & f) { return FormatValWHelperFloat(x, f); } -mpt::ustring FormatValU(const long double & x, const FormatSpec & f) { return FormatValWHelperFloat(x, f); } +mpt::ustring FormatValU(const bool & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const float & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const long double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } #endif #if MPT_USTRING_MODE_UTF8 -mpt::ustring FormatValU(const bool & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(static_cast(x), f)); } -mpt::ustring FormatValU(const signed char & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const unsigned char & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const signed short & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const unsigned short & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const signed int & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const unsigned int & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const signed long & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const unsigned long & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const signed long long & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const unsigned long long & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperInt(x, f)); } -mpt::ustring FormatValU(const float & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperFloat(x, f)); } -mpt::ustring FormatValU(const double & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperFloat(x, f)); } -mpt::ustring FormatValU(const long double & x, const FormatSpec & f) { return mpt::ToUnicode(mpt::Charset::UTF8, FormatValHelperFloat(x, f)); } +mpt::ustring FormatValU(const bool & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const signed long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const unsigned long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const float & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +mpt::ustring FormatValU(const long double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } #endif #if MPT_WSTRING_FORMAT -std::wstring FormatValW(const bool & x, const FormatSpec & f) { return FormatValWHelperInt(static_cast(x), f); } -std::wstring FormatValW(const signed char & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const unsigned char & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const signed short & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const unsigned short & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const signed int & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const unsigned int & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const signed long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const unsigned long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const signed long long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const unsigned long long & x, const FormatSpec & f) { return FormatValWHelperInt(x, f); } -std::wstring FormatValW(const float & x, const FormatSpec & f) { return FormatValWHelperFloat(x, f); } -std::wstring FormatValW(const double & x, const FormatSpec & f) { return FormatValWHelperFloat(x, f); } -std::wstring FormatValW(const long double & x, const FormatSpec & f) { return FormatValWHelperFloat(x, f); } +std::wstring FormatValW(const bool & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const signed char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const unsigned char & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const signed short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const unsigned short & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const signed int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const unsigned int & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const signed long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const unsigned long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const signed long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const unsigned long long & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const float & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } +std::wstring FormatValW(const long double & x, const FormatSpec & f) { return mpt::format_simple(x, f); } #endif Index: common/mptStringFormat.h =================================================================== --- common/mptStringFormat.h (revision 14776) +++ common/mptStringFormat.h (working copy) @@ -12,6 +12,11 @@ #include "BuildSettings.h" +#include "mpt/base/pointer.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string/types.hpp" + #include #include "mptString.h" @@ -33,15 +38,12 @@ // which results in "C" ASCII locale behavior. // 2. The full suite of printf-like or iostream like number formatting is generally not required. Instead, a sane subset functionality // is provided here. -// For convenience, mpt::fmt::f(const char *, float) allows formatting a single floating point value with a -// standard printf-like format string. This itself relies on iostream with classic() locale internally and is thus current locale -// agnostic. // When formatting integers, it is recommended to use mpt::fmt::dec or mpt::fmt::hex. Appending a template argument '' sets the width, // the same way as '%nd' would do. Appending a '0' to the function name causes zero-filling as print-like '%0nd' would do. Spelling 'HEX' // in upper-case generates upper-case hex digits. If these are not known at compile-time, a more verbose FormatVal(int, format) can be // used. // 3. mpt::format(format)(...) provides simplified and type-safe message and localization string formatting. -// The only specifier allowed is '%' followed by a single digit n. It references to n-th parameter after the format string (1-based). +// The only specifier allowed is '{}' enclosing a number n. It references to n-th parameter after the format string (1-based). // This mimics the behaviour of QString::arg() in QT4/5 or MFC AfxFormatString2(). C printf-like functions offer similar functionality // with a '%n$TYPE' syntax. In .NET, the syntax is '{n}'. This is useful to support localization strings that can change the parameter // ordering. @@ -200,31 +202,22 @@ template inline Tstring ToStringT(const T & x) { return ToStringTFunctor()(x); } +struct ToStringFormatter { + template + static inline Tstring format(const T& value) { + return ToStringTFunctor()(value); -struct fmt_base -{ - -enum FormatFlagsEnum -{ - BaseDec = 0x0001, // base 10 (integers only) - BaseHex = 0x0002, // base 16 (integers only) - CaseLow = 0x0010, // lower case hex digits - CaseUpp = 0x0020, // upper case hex digits - FillOff = 0x0100, // do not fill up width - FillNul = 0x0400, // fill up width with zeros - NotaNrm = 0x1000, // float: normal/default notation - NotaFix = 0x2000, // float: fixed point notation - NotaSci = 0x4000, // float: scientific notation + } }; -}; // struct fmt_base -typedef unsigned int FormatFlags; +using FormatSpec = mpt::format_simple_spec; -static_assert(sizeof(FormatFlags) >= sizeof(fmt_base::FormatFlagsEnum)); +using FormatFlags = mpt::format_simple_flags; -class FormatSpec; +using fmt_base = mpt::format_simple_base; + std::string FormatVal(const char & x, const FormatSpec & f) = delete; // deprecated to catch potential API mis-use, use std::string(1, x) instead #if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) std::string FormatVal(const wchar_t & x, const FormatSpec & f) = delete; // deprecated to catch potential API mis-use, use std::wstring(1, x) instead @@ -302,86 +295,6 @@ #endif // MPT_WITH_MFC -class FormatSpec -{ -private: - FormatFlags flags; - std::size_t width; - int precision; - unsigned int group; - char group_sep; -public: - MPT_CONSTEXPRINLINE FormatSpec() noexcept : flags(0), width(0), precision(-1), group(0), group_sep(',') {} - MPT_CONSTEXPRINLINE FormatFlags GetFlags() const noexcept { return flags; } - MPT_CONSTEXPRINLINE std::size_t GetWidth() const noexcept { return width; } - MPT_CONSTEXPRINLINE int GetPrecision() const noexcept { return precision; } - MPT_CONSTEXPRINLINE unsigned int GetGroup() const noexcept { return group; } - MPT_CONSTEXPRINLINE char GetGroupSep() const noexcept { return group_sep; } - MPT_CONSTEXPRINLINE FormatSpec & SetFlags(FormatFlags f) noexcept { flags = f; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & SetWidth(std::size_t w) noexcept { width = w; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & SetPrecision(int p) noexcept { precision = p; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & SetGroup(unsigned int g) noexcept { group = g; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & SetGroupSep(char s) noexcept { group_sep = s; return *this; } -public: - MPT_CONSTEXPRINLINE FormatSpec & BaseDec() noexcept { flags &= ~(fmt_base::BaseDec|fmt_base::BaseHex); flags |= fmt_base::BaseDec; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & BaseHex() noexcept { flags &= ~(fmt_base::BaseDec|fmt_base::BaseHex); flags |= fmt_base::BaseHex; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & CaseLow() noexcept { flags &= ~(fmt_base::CaseLow|fmt_base::CaseUpp); flags |= fmt_base::CaseLow; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & CaseUpp() noexcept { flags &= ~(fmt_base::CaseLow|fmt_base::CaseUpp); flags |= fmt_base::CaseUpp; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & FillOff() noexcept { flags &= ~(fmt_base::FillOff|fmt_base::FillNul); flags |= fmt_base::FillOff; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & FillNul() noexcept { flags &= ~(fmt_base::FillOff|fmt_base::FillNul); flags |= fmt_base::FillNul; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & NotaNrm() noexcept { flags &= ~(fmt_base::NotaNrm|fmt_base::NotaFix|fmt_base::NotaSci); flags |= fmt_base::NotaNrm; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & NotaFix() noexcept { flags &= ~(fmt_base::NotaNrm|fmt_base::NotaFix|fmt_base::NotaSci); flags |= fmt_base::NotaFix; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & NotaSci() noexcept { flags &= ~(fmt_base::NotaNrm|fmt_base::NotaFix|fmt_base::NotaSci); flags |= fmt_base::NotaSci; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & Width(std::size_t w) noexcept { width = w; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & Prec(int p) noexcept { precision = p; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & Group(unsigned int g) noexcept { group = g; return *this; } - MPT_CONSTEXPRINLINE FormatSpec & GroupSep(char s) noexcept { group_sep = s; return *this; } -public: - MPT_CONSTEXPRINLINE FormatSpec & Dec() noexcept { return BaseDec(); } - MPT_CONSTEXPRINLINE FormatSpec & Hex() noexcept { return BaseHex(); } - MPT_CONSTEXPRINLINE FormatSpec & Low() noexcept { return CaseLow(); } - MPT_CONSTEXPRINLINE FormatSpec & Upp() noexcept { return CaseUpp(); } - MPT_CONSTEXPRINLINE FormatSpec & Off() noexcept { return FillOff(); } - MPT_CONSTEXPRINLINE FormatSpec & Nul() noexcept { return FillNul(); } - MPT_CONSTEXPRINLINE FormatSpec & Nrm() noexcept { return NotaNrm(); } - MPT_CONSTEXPRINLINE FormatSpec & Fix() noexcept { return NotaFix(); } - MPT_CONSTEXPRINLINE FormatSpec & Sci() noexcept { return NotaSci(); } -public: - MPT_CONSTEXPRINLINE FormatSpec & Decimal() noexcept { return BaseDec(); } - MPT_CONSTEXPRINLINE FormatSpec & Hexadecimal() noexcept { return BaseHex(); } - MPT_CONSTEXPRINLINE FormatSpec & Lower() noexcept { return CaseLow(); } - MPT_CONSTEXPRINLINE FormatSpec & Upper() noexcept { return CaseUpp(); } - MPT_CONSTEXPRINLINE FormatSpec & FillNone() noexcept { return FillOff(); } - MPT_CONSTEXPRINLINE FormatSpec & FillZero() noexcept { return FillNul(); } - MPT_CONSTEXPRINLINE FormatSpec & FloatNormal() noexcept { return NotaNrm(); } - MPT_CONSTEXPRINLINE FormatSpec & FloatFixed() noexcept { return NotaFix(); } - MPT_CONSTEXPRINLINE FormatSpec & FloatScientific() noexcept { return NotaSci(); } - MPT_CONSTEXPRINLINE FormatSpec & Precision(int p) noexcept { return Prec(p); } -}; - -template -struct pointer_cast_helper -{ - Tdst operator()(const Tsrc & src) const { return src; } -}; -template -struct pointer_cast_helper -{ - Tdst operator()(const Tptr * const & src) const { return reinterpret_cast(src); } -}; -template -struct pointer_cast_helper -{ - Tdst operator()(const Tptr * const & src) const { return reinterpret_cast(src); } -}; - - -template -Tdst pointer_cast(const Tsrc & src) -{ - return pointer_cast_helper()(src); -} - template struct fmtT : fmt_base { @@ -497,13 +410,13 @@ static inline Tstring ptr(const T& x) { static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); - return hex0(pointer_cast(x)); + return hex0(mpt::pointer_cast(x)); } template static inline Tstring PTR(const T& x) { static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); - return HEX0(pointer_cast(x)); + return HEX0(mpt::pointer_cast(x)); } static inline Tstring pad_left(std::size_t width_, const Tstring &str) @@ -559,428 +472,28 @@ typedef fmtT cfmt; #endif // MPT_WITH_MFC -} // namespace mpt -namespace mpt { +#define MPT_FORMAT(f) mpt::format_message(f) -namespace String { - -namespace detail -{ - -template struct to_string_type { }; -template <> struct to_string_type { typedef std::string type; }; -template <> struct to_string_type { typedef std::string type; }; -template <> struct to_string_type { typedef std::string type; }; -template <> struct to_string_type { typedef std::string type; }; -template <> struct to_string_type { typedef std::string type; }; -#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) -template <> struct to_string_type { typedef std::wstring type; }; -template <> struct to_string_type { typedef std::wstring type; }; -template <> struct to_string_type { typedef std::wstring type; }; -template <> struct to_string_type { typedef std::wstring type; }; -template <> struct to_string_type { typedef std::wstring type; }; -#endif // !MPT_COMPILER_QUIRK_NO_WCHAR -#if MPT_USTRING_MODE_UTF8 -template <> struct to_string_type { typedef mpt::ustring type; }; -#endif -#if defined(MPT_ENABLE_CHARSET_LOCALE) -template <> struct to_string_type { typedef mpt::lstring type; }; -#endif // MPT_ENABLE_CHARSET_LOCALE -#if defined(MPT_WITH_MFC) -template <> struct to_string_type { typedef CString type; }; -#endif // MPT_WITH_MFC -template struct to_string_type { typedef typename to_string_type::type type; }; - -} // namespace detail - -} // namespace String - -class format_string_syntax_error - : public std::domain_error -{ -public: - format_string_syntax_error() - : std::domain_error("format string syntax error") - { - return; - } -}; - -template -class message_formatter -{ - -public: - - typedef typename mpt::String::detail::to_string_type::type Tstring; - -private: - - Tstring format; - -private: - - MPT_NOINLINE Tstring do_format(const mpt::span vals) const - { - using traits = typename mpt::string_traits; - using char_type = typename traits::char_type; - using size_type = typename traits::size_type; - Tstring result; - const size_type len = traits::length(format); - traits::reserve(result, len); - std::size_t max_arg = 0; - std::size_t args = 0; - bool std_style_success = true; - { - enum class state : int { - error = -1, - text = 0, - open_seen = 1, - number_seen = 2, - close_seen = 3, - }; - state state = state::text; - bool numbered_args = false; - bool unnumbered_args = false; - std::size_t last_arg = 0; - std::size_t this_arg = 0; - std::size_t current_arg = 0; - for(size_type pos = 0; pos != len; ++pos) - { - char_type c = format[pos]; - switch(state) - { - case state::text: - if(c == char_type('{')) - { - state = state::open_seen; - } else if(c == char_type('}')) - { - state = state::close_seen; - } else - { - state = state::text; - traits::append(result, 1, c); // output c here - } - break; - case state::open_seen: - if(c == char_type('{')) - { - state = state::text; - traits::append(result, 1, char_type('{')); // output { here - } else if(c == char_type('}')) - { - state = state::text; - unnumbered_args = true; - last_arg++; - this_arg = last_arg; - { // output this_arg here - const std::size_t n = this_arg - 1; - if(n < std::size(vals)) - { - traits::append(result, vals[n]); - } - } - if(this_arg > max_arg) - { - max_arg = this_arg; - } - args += 1; - } else if(char_type('0') <= c && c <= char_type('9')) - { - state = state::number_seen; - numbered_args = true; - current_arg = c - char_type('0'); - } else - { - state = state::error; - } - break; - case state::number_seen: - if(c == char_type('{')) - { - state = state::error; - } else if(c == char_type('}')) - { - state = state::text; - this_arg = current_arg + 1; - { // output this_arg here - const std::size_t n = this_arg - 1; - if(n < std::size(vals)) - { - traits::append(result, vals[n]); - } - } - if(this_arg > max_arg) - { - max_arg = this_arg; - } - args += 1; - } else if(char_type('0') <= c && c <= char_type('9')) - { - state = state::number_seen; - numbered_args = true; - current_arg = (current_arg * 10) + (c - char_type('0')); - } else - { - state = state::error; - } - break; - case state::close_seen: - if(c == char_type('{')) - { - state = state::error; - } else if(c == char_type('}')) - { - state = state::text; - traits::append(result, 1, char_type('}')); // output } here - } else - { - state = state::error; - } - break; - case state::error: - state = state::error; - break; - } - } - if(state == state::error) - { - std_style_success = false; - } - if(state != state::text) - { - std_style_success = false; - } - if(numbered_args && unnumbered_args) - { - std_style_success = false; - } - } - if(!std_style_success) - { - throw format_string_syntax_error(); - } - return result; - } - -public: - - MPT_FORCEINLINE message_formatter(Tstring format_) - : format(std::move(format_)) - { - } - -public: - - template - MPT_NOINLINE Tstring operator() (Ts&&... xs) const - { - const std::array vals{{ToStringTFunctor()(std::forward(xs))...}}; - return do_format(mpt::as_span(vals)); - } - -}; // struct message_formatter - -template -class message_formatter_counted -{ - -private: - - message_formatterformatter; - -public: - - template - inline message_formatter_counted(const Tchar (&format)[literal_length]) - : formatter(Tstring(format)) - { - return; - } - -public: - - template - inline Tstring operator() (Ts&&... xs) const - { - static_assert(static_cast(sizeof...(xs)) == N); - return formatter(std::forward(xs)...); - } - -}; // struct message_formatter_counted - -template -MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count_impl(const Tchar * const format, const std::size_t len) -{ - std::size_t max_arg = 0; - std::size_t args = 0; - bool std_style_success = true; - { - enum class state : int { - error = -1, - text = 0, - open_seen = 1, - number_seen = 2, - close_seen = 3, - }; - state state = state::text; - bool numbered_args = false; - bool unnumbered_args = false; - std::size_t last_arg = 0; - std::size_t this_arg = 0; - std::size_t current_arg = 0; - for(std::size_t pos = 0; pos != len; ++pos) - { - Tchar c = format[pos]; - switch(state) - { - case state::text: - if(c == Tchar('{')) - { - state = state::open_seen; - } else if(c == Tchar('}')) - { - state = state::close_seen; - } else - { - state = state::text; - // output c here - } - break; - case state::open_seen: - if(c == Tchar('{')) - { - state = state::text; - // output { here - } else if(c == Tchar('}')) - { - state = state::text; - unnumbered_args = true; - last_arg++; - this_arg = last_arg; - // output this_arg here - if(this_arg > max_arg) - { - max_arg = this_arg; - } - args += 1; - } else if(Tchar('0') <= c && c <= Tchar('9')) - { - state = state::number_seen; - numbered_args = true; - current_arg = c - Tchar('0'); - } else - { - state = state::error; - } - break; - case state::number_seen: - if(c == Tchar('{')) - { - state = state::error; - } else if(c == Tchar('}')) - { - state = state::text; - this_arg = current_arg + 1; - // output this_arg here - if(this_arg > max_arg) - { - max_arg = this_arg; - } - args += 1; - } else if(Tchar('0') <= c && c <= Tchar('9')) - { - state = state::number_seen; - numbered_args = true; - current_arg = (current_arg * 10) + (c - Tchar('0')); - } else - { - state = state::error; - } - break; - case state::close_seen: - if(c == Tchar('{')) - { - state = state::error; - } else if(c == Tchar('}')) - { - state = state::text; - // output } here - } else - { - state = state::error; - } - break; - case state::error: - state = state::error; - break; - } - } - if(state == state::error) - { - std_style_success = false; - } - if(state != state::text) - { - std_style_success = false; - } - if(numbered_args && unnumbered_args) - { - std_style_success = false; - } - } - if(!std_style_success) - { - throw format_string_syntax_error(); - } - if(max_arg != args) - { - throw format_string_syntax_error(); - } - return max_arg; -} - -template -MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count(const Tchar (&format)[literal_length]) -{ - return parse_format_string_argument_count_impl(format, literal_length - 1); -} - -template -inline auto format_counted(const Tchar (&format)[N]) -{ - typedef typename mpt::String::detail::to_string_type::type Tstring; - return message_formatter_counted(format); -} - -template -inline auto format_counted_typed(const Tchar (&format)[N]) -{ - return message_formatter_counted(format); -} - -#define MPT_FORMAT(f) mpt::format_counted(f) - #if MPT_WSTRING_FORMAT -#define MPT_WFORMAT(f) mpt::format_counted_typed( L ## f ) +#define MPT_WFORMAT(f) mpt::format_message_typed( L ## f ) #endif -#define MPT_UFORMAT(f) mpt::format_counted_typed(MPT_ULITERAL(f)) +#define MPT_UFORMAT(f) mpt::format_message_typed(MPT_ULITERAL(f)) #if defined(MPT_ENABLE_CHARSET_LOCALE) -#define MPT_LFORMAT(f) mpt::format_counted_typed(f) +#define MPT_LFORMAT(f) mpt::format_message_typed(f) #endif // MPT_ENABLE_CHARSET_LOCALE #if MPT_OS_WINDOWS -#define MPT_TFORMAT(f) mpt::format_counted_typed(TEXT(f)) +#define MPT_TFORMAT(f) mpt::format_message_typed(TEXT(f)) #endif #if defined(MPT_WITH_MFC) -#define MPT_CFORMAT(f) mpt::format_counted_typed(TEXT(f)) +#define MPT_CFORMAT(f) mpt::format_message_typed(TEXT(f)) #endif // MPT_WITH_MFC + } // namespace mpt Index: common/mptStringParse.cpp =================================================================== --- common/mptStringParse.cpp (revision 14776) +++ common/mptStringParse.cpp (working copy) @@ -11,8 +11,7 @@ #include "stdafx.h" #include "mptStringParse.h" -#include -#include +#include "mpt/parse/parse.hpp" OPENMPT_NAMESPACE_BEGIN @@ -21,14 +20,7 @@ template inline T ConvertStrToHelper(const std::string &str) { - std::istringstream i(str); - i.imbue(std::locale::classic()); - T x; - if(!(i >> x)) - { - return T(); - } - return x; + return mpt::ConvertStringTo(str); } template<> inline bool ConvertStrToHelper(const std::string &str) { return ConvertStrToHelper(str)?true:false; } template<> inline signed char ConvertStrToHelper(const std::string &str) { return static_cast(ConvertStrToHelper(str)); } @@ -38,14 +30,7 @@ template inline T ConvertStrToHelper(const std::wstring &str) { - std::wistringstream i(str); - i.imbue(std::locale::classic()); - T x; - if(!(i >> x)) - { - return T(); - } - return x; + return mpt::ConvertStringTo(str); } template<> inline bool ConvertStrToHelper(const std::wstring &str) { return ConvertStrToHelper(str)?true:false; } template<> inline signed char ConvertStrToHelper(const std::wstring &str) { return static_cast(ConvertStrToHelper(str)); } @@ -95,14 +80,7 @@ template T HexToHelper(const std::string &str) { - std::istringstream i(str); - i.imbue(std::locale::classic()); - T x; - if(!(i >> std::hex >> x)) - { - return T(); - } - return x; + return mpt::ConvertHexStringTo(str); } template<> unsigned char HexToHelper(const std::string &str) { return static_cast(HexToHelper(str)); } Index: common/mptUUID.cpp =================================================================== --- common/mptUUID.cpp (revision 14776) +++ common/mptUUID.cpp (working copy) @@ -11,21 +11,10 @@ #include "stdafx.h" #include "mptUUID.h" -#include "mptRandom.h" -#include "mptStringFormat.h" -#include "Endianness.h" +#include "mpt/uuid/guid.hpp" +#include "mpt/uuid/uuid.hpp" -#include -#if MPT_OS_WINDOWS -#include -#include -#if defined(MODPLUG_TRACKER) || defined(MPT_WITH_DMO) || MPT_OS_WINDOWS_WINRT -#include -#endif // MODPLUG_TRACKER || MPT_WITH_DMO || MPT_OS_WINDOWS_WINRT -#endif // MPT_OS_WINDOWS - - OPENMPT_NAMESPACE_BEGIN @@ -38,263 +27,58 @@ #if defined(MODPLUG_TRACKER) || defined(MPT_WITH_DMO) - mpt::winstring CLSIDToString(CLSID clsid) { - std::wstring str; - LPOLESTR tmp = nullptr; - switch(::StringFromCLSID(clsid, &tmp)) - { - case S_OK: - break; - case E_OUTOFMEMORY: - if(tmp) - { - ::CoTaskMemFree(tmp); - tmp = nullptr; - } - mpt::throw_out_of_memory(); - break; - default: - if(tmp) - { - ::CoTaskMemFree(tmp); - tmp = nullptr; - } - throw std::logic_error("StringFromCLSID() failed."); - break; - } - if(!tmp) - { - throw std::logic_error("StringFromCLSID() failed."); - } - try - { - str = tmp; - } catch(mpt::out_of_memory e) - { - ::CoTaskMemFree(tmp); - tmp = nullptr; - mpt::rethrow_out_of_memory(e); - } - ::CoTaskMemFree(tmp); - tmp = nullptr; - return mpt::ToWin(str); + return mpt::CLSIDToString(clsid); } - -CLSID StringToCLSID(const mpt::winstring &str_) +CLSID StringToCLSID(const mpt::winstring& str_) { - const std::wstring str = mpt::ToWide(str_); - CLSID clsid = CLSID(); - std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); - switch(::CLSIDFromString(tmp.data(), &clsid)) - { - case NOERROR: - // nothing - break; - case E_INVALIDARG: - clsid = CLSID(); - break; - case CO_E_CLASSSTRING: - clsid = CLSID(); - break; - case REGDB_E_CLASSNOTREG: - clsid = CLSID(); - break; - case REGDB_E_READREGDB: - clsid = CLSID(); - throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); - break; - default: - clsid = CLSID(); - throw std::logic_error("CLSIDFromString() failed."); - break; - } - return clsid; + return mpt::StringToCLSID(str_); } - bool VerifyStringToCLSID(const mpt::winstring &str_, CLSID &clsid) { - const std::wstring str = mpt::ToWide(str_); - bool result = false; - clsid = CLSID(); - std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); - switch(::CLSIDFromString(tmp.data(), &clsid)) - { - case NOERROR: - result = true; - break; - case E_INVALIDARG: - result = false; - break; - case CO_E_CLASSSTRING: - result = false; - break; - case REGDB_E_CLASSNOTREG: - result = false; - break; - case REGDB_E_READREGDB: - throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); - break; - default: - throw std::logic_error("CLSIDFromString() failed."); - break; - } - return result; + return mpt::VerifyStringToCLSID(str_, clsid); } - bool IsCLSID(const mpt::winstring &str_) { - const std::wstring str = mpt::ToWide(str_); - bool result = false; - CLSID clsid = CLSID(); - std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); - switch(::CLSIDFromString(tmp.data(), &clsid)) - { - case NOERROR: - result = true; - break; - case E_INVALIDARG: - result = false; - break; - case CO_E_CLASSSTRING: - result = false; - break; - case REGDB_E_CLASSNOTREG: - result = false; - break; - case REGDB_E_READREGDB: - result = false; - throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); - break; - default: - result = false; - throw std::logic_error("CLSIDFromString() failed."); - break; - } - return result; + return mpt::IsCLSID(str_); } mpt::winstring IIDToString(IID iid) { - std::wstring str; - LPOLESTR tmp = nullptr; - switch(::StringFromIID(iid, &tmp)) - { - case S_OK: - break; - case E_OUTOFMEMORY: - if(tmp) - { - ::CoTaskMemFree(tmp); - tmp = nullptr; - } - mpt::throw_out_of_memory(); - break; - default: - if(tmp) - { - ::CoTaskMemFree(tmp); - tmp = nullptr; - } - throw std::logic_error("StringFromIID() failed."); - break; - } - if(!tmp) - { - throw std::logic_error("StringFromIID() failed."); - } - try - { - str = tmp; - } catch(mpt::out_of_memory e) - { - ::CoTaskMemFree(tmp); - tmp = nullptr; - mpt::rethrow_out_of_memory(e); - } - return mpt::ToWin(str); + return mpt::IIDToString(iid); } - IID StringToIID(const mpt::winstring &str_) { - const std::wstring str = mpt::ToWide(str_); - IID iid = IID(); - std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); - switch(::IIDFromString(tmp.data(), &iid)) - { - case S_OK: - // nothing - break; - case E_OUTOFMEMORY: - iid = IID(); - mpt::throw_out_of_memory(); - break; - case E_INVALIDARG: - iid = IID(); - break; - default: - iid = IID(); - throw std::logic_error("IIDFromString() failed."); - break; - } - return iid; + return mpt::StringToIID(str_); } mpt::winstring GUIDToString(GUID guid) { - std::vector tmp(256); - if(::StringFromGUID2(guid, tmp.data(), static_cast(tmp.size())) <= 0) - { - throw std::logic_error("StringFromGUID2() failed."); - } - return mpt::ToWin(tmp.data()); + return mpt::GUIDToString(guid); } - GUID StringToGUID(const mpt::winstring &str) { - return StringToIID(str); + return mpt::StringToGUID(str); } GUID CreateGUID() { - GUID guid = GUID(); - switch(::CoCreateGuid(&guid)) - { - case S_OK: - // nothing - break; - default: - guid = GUID(); - throw std::runtime_error("CoCreateGuid() failed."); - } - return guid; + return mpt::CreateGUID(); } bool IsValid(UUID uuid) { - return false - || uuid.Data1 != 0 - || uuid.Data2 != 0 - || uuid.Data3 != 0 - || uuid.Data4[0] != 0 - || uuid.Data4[1] != 0 - || uuid.Data4[2] != 0 - || uuid.Data4[3] != 0 - || uuid.Data4[4] != 0 - || uuid.Data4[5] != 0 - || uuid.Data4[6] != 0 - || uuid.Data4[7] != 0 - ; + return mpt::IsValid(uuid); } @@ -307,264 +91,4 @@ #endif // MPT_OS_WINDOWS -namespace mpt -{ - -#if MPT_OS_WINDOWS - -static mpt::UUID UUIDFromWin32(::UUID uuid) -{ - return mpt::UUID - ( uuid.Data1 - , uuid.Data2 - , uuid.Data3 - , (static_cast(0) - | (static_cast(uuid.Data4[0]) << 56) - | (static_cast(uuid.Data4[1]) << 48) - | (static_cast(uuid.Data4[2]) << 40) - | (static_cast(uuid.Data4[3]) << 32) - | (static_cast(uuid.Data4[4]) << 24) - | (static_cast(uuid.Data4[5]) << 16) - | (static_cast(uuid.Data4[6]) << 8) - | (static_cast(uuid.Data4[7]) << 0) - ) - ); -} - -#if defined(MODPLUG_TRACKER) || defined(MPT_WITH_DMO) - -static ::UUID UUIDToWin32(mpt::UUID uuid) -{ - ::UUID result = ::UUID(); - result.Data1 = uuid.GetData1(); - result.Data2 = uuid.GetData2(); - result.Data3 = uuid.GetData3(); - result.Data4[0] = static_cast(uuid.GetData4() >> 56); - result.Data4[1] = static_cast(uuid.GetData4() >> 48); - result.Data4[2] = static_cast(uuid.GetData4() >> 40); - result.Data4[3] = static_cast(uuid.GetData4() >> 32); - result.Data4[4] = static_cast(uuid.GetData4() >> 24); - result.Data4[5] = static_cast(uuid.GetData4() >> 16); - result.Data4[6] = static_cast(uuid.GetData4() >> 8); - result.Data4[7] = static_cast(uuid.GetData4() >> 0); - return result; -} - -UUID::UUID(::UUID uuid) -{ - *this = UUIDFromWin32(uuid); -} - -UUID::operator ::UUID () const -{ - return UUIDToWin32(*this); -} - -#endif // MODPLUG_TRACKER || MPT_WITH_DMO - -#endif // MPT_OS_WINDOWS - -UUID UUID::Generate() -{ - #if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT - #if (_WIN32_WINNT >= 0x0602) - ::GUID guid = ::GUID(); - HRESULT result = CoCreateGuid(&guid); - if(result != S_OK) - { - return mpt::UUID::RFC4122Random(); - } - return mpt::UUIDFromWin32(guid); - #else - return mpt::UUID::RFC4122Random(); - #endif - #elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT - ::UUID uuid = ::UUID(); - RPC_STATUS status = ::UuidCreate(&uuid); - if(status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) - { - return mpt::UUID::RFC4122Random(); - } - status = RPC_S_OK; - if(UuidIsNil(&uuid, &status) != FALSE) - { - return mpt::UUID::RFC4122Random(); - } - if(status != RPC_S_OK) - { - return mpt::UUID::RFC4122Random(); - } - return mpt::UUIDFromWin32(uuid); - #else - return RFC4122Random(); - #endif -} - -UUID UUID::GenerateLocalUseOnly() -{ - #if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT - #if (_WIN32_WINNT >= 0x0602) - ::GUID guid = ::GUID(); - HRESULT result = CoCreateGuid(&guid); - if(result != S_OK) - { - return mpt::UUID::RFC4122Random(); - } - return mpt::UUIDFromWin32(guid); - #else - return mpt::UUID::RFC4122Random(); - #endif - #elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT - #if _WIN32_WINNT >= 0x0501 - // Available since Win2000, but we check for WinXP in order to not use this - // function in Win32old builds. It is not available on some non-fully - // patched Win98SE installs in the wild. - ::UUID uuid = ::UUID(); - RPC_STATUS status = ::UuidCreateSequential(&uuid); - if(status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) - { - return Generate(); - } - status = RPC_S_OK; - if(UuidIsNil(&uuid, &status) != FALSE) - { - return mpt::UUID::RFC4122Random(); - } - if(status != RPC_S_OK) - { - return mpt::UUID::RFC4122Random(); - } - return mpt::UUIDFromWin32(uuid); - #else - // Fallback to ::UuidCreate is safe as ::UuidCreateSequential is only a - // tiny performance optimization. - return Generate(); - #endif - #else - return RFC4122Random(); - #endif -} - -UUID UUID::RFC4122Random() -{ - UUID result; - mpt::thread_safe_prng & prng = mpt::global_prng(); - result.Data1 = mpt::random(prng); - result.Data2 = mpt::random(prng); - result.Data3 = mpt::random(prng); - result.Data4 = mpt::random(prng); - result.MakeRFC4122(4); - return result; -} - -void UUID::MakeRFC4122(uint8 version) noexcept -{ - // variant - uint8 Nn = static_cast((Data4 >> 56) & 0xffu); - Data4 &= 0x00ffffffffffffffull; - Nn &= ~(0xc0u); - Nn |= 0x80u; - Data4 |= static_cast(Nn) << 56; - // version - version &= 0x0fu; - uint8 Mm = static_cast((Data3 >> 8) & 0xffu); - Data3 &= 0x00ffu; - Mm &= ~(0xf0u); - Mm |= (version << 4u); - Data3 |= static_cast(Mm) << 8; -} - -UUID UUID::FromString(const mpt::ustring &str) -{ - std::vector segments = mpt::String::Split(str, U_("-")); - if(segments.size() != 5) - { - return UUID(); - } - if(segments[0].length() != 8) - { - return UUID(); - } - if(segments[1].length() != 4) - { - return UUID(); - } - if(segments[2].length() != 4) - { - return UUID(); - } - if(segments[3].length() != 4) - { - return UUID(); - } - if(segments[4].length() != 12) - { - return UUID(); - } - UUID result; - result.Data1 = mpt::String::Parse::Hex(segments[0]); - result.Data2 = mpt::String::Parse::Hex(segments[1]); - result.Data3 = mpt::String::Parse::Hex(segments[2]); - result.Data4 = mpt::String::Parse::Hex(segments[3] + segments[4]); - return result; -} - -mpt::ustring UUID::ToUString() const -{ - return mpt::ustring() - + mpt::ufmt::hex0<8>(GetData1()) - + U_("-") - + mpt::ufmt::hex0<4>(GetData2()) - + U_("-") - + mpt::ufmt::hex0<4>(GetData3()) - + U_("-") - + mpt::ufmt::hex0<4>(static_cast(GetData4() >> 48)) - + U_("-") - + mpt::ufmt::hex0<4>(static_cast(GetData4() >> 32)) - + mpt::ufmt::hex0<8>(static_cast(GetData4() >> 0)) - ; -} - -UUID::UUID(UUIDbin uuid) -{ - Data1 = uuid.Data1.get(); - Data2 = uuid.Data2.get(); - Data3 = uuid.Data3.get(); - Data4 = uuid.Data4.get(); -} - -UUID::UUID(GUIDms guid) -{ - Data1 = guid.Data1.get(); - Data2 = guid.Data2.get(); - Data3 = guid.Data3.get(); - Data4 = guid.Data4.get(); -} - -UUID::operator UUIDbin() const -{ - UUIDbin result; - Clear(result); - result.Data1 = GetData1(); - result.Data2 = GetData2(); - result.Data3 = GetData3(); - result.Data4 = GetData4(); - return result; -} - -UUID::operator GUIDms() const -{ - GUIDms result; - Clear(result); - result.Data1 = GetData1(); - result.Data2 = GetData2(); - result.Data3 = GetData3(); - result.Data4 = GetData4(); - return result; -} - - -} // namespace mpt - - OPENMPT_NAMESPACE_END Index: common/mptUUID.h =================================================================== --- common/mptUUID.h (revision 14776) +++ common/mptUUID.h (working copy) @@ -12,6 +12,7 @@ #include "BuildSettings.h" +#include "mpt/uuid/uuid.hpp" #include "Endianness.h" @@ -64,148 +65,8 @@ #endif // MPT_OS_WINDOWS -// Microsoft on-disk layout -struct GUIDms -{ - uint32le Data1; - uint16le Data2; - uint16le Data3; - uint64be Data4; // yes, big endian here -}; -MPT_BINARY_STRUCT(GUIDms, 16) -// RFC binary format -struct UUIDbin -{ - uint32be Data1; - uint16be Data2; - uint16be Data3; - uint64be Data4; -}; -MPT_BINARY_STRUCT(UUIDbin, 16) +using namespace mpt::uuid_literals; -namespace mpt { -struct UUID -{ -private: - uint32 Data1; - uint16 Data2; - uint16 Data3; - uint64 Data4; -public: - MPT_CONSTEXPRINLINE uint32 GetData1() const noexcept { return Data1; } - MPT_CONSTEXPRINLINE uint16 GetData2() const noexcept { return Data2; } - MPT_CONSTEXPRINLINE uint16 GetData3() const noexcept { return Data3; } - MPT_CONSTEXPRINLINE uint64 GetData4() const noexcept { return Data4; } -public: - MPT_CONSTEXPRINLINE uint64 GetData64_1() const noexcept { return (static_cast(Data1) << 32) | (static_cast(Data2) << 16) | (static_cast(Data3) << 0); } - MPT_CONSTEXPRINLINE uint64 GetData64_2() const noexcept { return Data4; } -public: - // xxxxxxxx-xxxx-Mmxx-Nnxx-xxxxxxxxxxxx - // <--32-->-<16>-<16>-<-------64------> - MPT_CONSTEXPRINLINE bool IsNil() const noexcept { return (Data1 == 0) && (Data2 == 0) && (Data3 == 0) && (Data4 == 0); } - MPT_CONSTEXPRINLINE bool IsValid() const noexcept { return (Data1 != 0) || (Data2 != 0) || (Data3 != 0) || (Data4 != 0); } - MPT_CONSTEXPRINLINE uint8 Variant() const noexcept { return Nn() >> 4u; } - MPT_CONSTEXPRINLINE uint8 Version() const noexcept { return Mm() >> 4u; } - MPT_CONSTEXPRINLINE bool IsRFC4122() const noexcept { return (Variant() & 0xcu) == 0x8u; } -private: - MPT_CONSTEXPRINLINE uint8 Mm() const noexcept { return static_cast((Data3 >> 8) & 0xffu); } - MPT_CONSTEXPRINLINE uint8 Nn() const noexcept { return static_cast((Data4 >> 56) & 0xffu); } - void MakeRFC4122(uint8 version) noexcept; -public: -#if MPT_OS_WINDOWS && (defined(MODPLUG_TRACKER) || defined(MPT_WITH_DMO)) - explicit UUID(::UUID uuid); - operator ::UUID () const; -#endif // MPT_OS_WINDOWS && (MODPLUG_TRACKER || MPT_WITH_DMO) -private: - static MPT_CONSTEXPRINLINE uint8 NibbleFromChar(char x) - { - return - ('0' <= x && x <= '9') ? static_cast(x - '0' + 0) : - ('a' <= x && x <= 'z') ? static_cast(x - 'a' + 10) : - ('A' <= x && x <= 'Z') ? static_cast(x - 'A' + 10) : - mpt::constexpr_throw(std::domain_error("")); - } - static MPT_CONSTEXPRINLINE uint8 ByteFromHex(char x, char y) - { - return static_cast(uint8(0) - | (NibbleFromChar(x) << 4) - | (NibbleFromChar(y) << 0) - ); - } - static MPT_CONSTEXPRINLINE uint16 ParseHex16(const char * str) - { - return static_cast(uint16(0) - | (static_cast(ByteFromHex(str[0], str[1])) << 8) - | (static_cast(ByteFromHex(str[2], str[3])) << 0) - ); - } - static MPT_CONSTEXPRINLINE uint32 ParseHex32(const char * str) - { - return static_cast(uint32(0) - | (static_cast(ByteFromHex(str[0], str[1])) << 24) - | (static_cast(ByteFromHex(str[2], str[3])) << 16) - | (static_cast(ByteFromHex(str[4], str[5])) << 8) - | (static_cast(ByteFromHex(str[6], str[7])) << 0) - ); - } -public: - static MPT_CONSTEXPRINLINE UUID ParseLiteral(const char * str, std::size_t len) - { - return - (len == 36 && str[8] == '-' && str[13] == '-' && str[18] == '-' && str[23] == '-') ? - mpt::UUID( - ParseHex32(str + 0), - ParseHex16(str + 9), - ParseHex16(str + 14), - uint64(0) - | (static_cast(ParseHex16(str + 19)) << 48) - | (static_cast(ParseHex16(str + 24)) << 32) - | (static_cast(ParseHex32(str + 28)) << 0) - ) - : mpt::constexpr_throw(std::domain_error("")); - } -public: - MPT_CONSTEXPRINLINE UUID() noexcept : Data1(0), Data2(0), Data3(0), Data4(0) { } - MPT_CONSTEXPRINLINE explicit UUID(uint32 Data1, uint16 Data2, uint16 Data3, uint64 Data4) noexcept : Data1(Data1), Data2(Data2), Data3(Data3), Data4(Data4) { } - explicit UUID(UUIDbin uuid); - explicit UUID(GUIDms guid); - operator UUIDbin () const; - operator GUIDms () const; -public: - // Create a UUID - static UUID Generate(); - // Create a UUID that contains local, traceable information. - // Safe for local use. May be faster. - static UUID GenerateLocalUseOnly(); - // Create a RFC4122 Random UUID. - static UUID RFC4122Random(); - friend UUID UUIDRFC4122NamespaceV3(const UUID &ns, const mpt::ustring &name); - friend UUID UUIDRFC4122NamespaceV5(const UUID &ns, const mpt::ustring &name); -public: - // General UUID<->string conversion. - // The string must/will be in standard UUID format: 4f9a455d-e7ef-4367-b2f0-0c83a38a5c72 - static UUID FromString(const mpt::ustring &str); - mpt::ustring ToUString() const; -}; - -MPT_CONSTEXPRINLINE bool operator==(const mpt::UUID & a, const mpt::UUID & b) noexcept -{ - return (a.GetData1() == b.GetData1()) && (a.GetData2() == b.GetData2()) && (a.GetData3() == b.GetData3()) && (a.GetData4() == b.GetData4()); -} -MPT_CONSTEXPRINLINE bool operator!=(const mpt::UUID & a, const mpt::UUID & b) noexcept -{ - return (a.GetData1() != b.GetData1()) || (a.GetData2() != b.GetData2()) || (a.GetData3() != b.GetData3()) || (a.GetData4() != b.GetData4()); -} - -} // namespace mpt - - -MPT_CONSTEXPRINLINE mpt::UUID operator "" _uuid (const char * str, std::size_t len) -{ - return mpt::UUID::ParseLiteral(str, len); -} - - OPENMPT_NAMESPACE_END Index: common/stdafx.h =================================================================== --- common/stdafx.h (revision 14776) +++ common/stdafx.h (working copy) @@ -58,6 +58,14 @@ #endif +#include "mpt/check/libc.hpp" +#if defined(MPT_WITH_MFC) +#include "mpt/check/mfc.hpp" +#endif +#if MPT_OS_WINDOWS +#include "mpt/check/windows.hpp" +#endif + // this will be available everywhere #include "../common/mptBaseMacros.h" Index: doc/year_changed.md =================================================================== --- doc/year_changed.md (revision 14776) +++ doc/year_changed.md (working copy) @@ -3,6 +3,7 @@ ========================================== * `LICENSE` (1 occurrence) + * `src/mpt/LICENSE.BSD-3-Clause.txt` (1 occurrence) * `common/version.cpp` (2 occurrences plus 1 for each current contributor) * `mptrack/res/MPTRACK.RC2` (1 occurence) * `pluginBridge/PluginBridge.rc` (1 occurence) Index: installer/signtool/signtool.cpp =================================================================== --- installer/signtool/signtool.cpp (revision 14776) +++ installer/signtool/signtool.cpp (working copy) @@ -1,6 +1,8 @@ #include "BuildSettings.h" +#include "mpt/environment/environment.hpp" + #include "../common/mptBaseMacros.h" #include "../common/mptBaseTypes.h" #include "../common/mptBaseUtils.h" Index: libopenmpt/.clang-format =================================================================== --- libopenmpt/.clang-format (revision 14776) +++ libopenmpt/.clang-format (working copy) @@ -122,7 +122,7 @@ SpacesInContainerLiterals: true SpacesInParentheses: true SpacesInSquareBrackets: false -StatementMacros: ['MPT_WARNING'] #? +StatementMacros: [ 'MPT_WARNING', 'MPT_TEST_GROUP_INLINE_IDENTIFIER', 'MPT_TEST_GROUP_INLINE', 'MPT_TEST_GROUP_STATIC' ] #? TabWidth: 2 TypenameMacros: [] #? UseCRLF: false Index: libopenmpt/libopenmpt_ext_impl.cpp =================================================================== --- libopenmpt/libopenmpt_ext_impl.cpp (revision 14776) +++ libopenmpt/libopenmpt_ext_impl.cpp (working copy) @@ -21,6 +21,9 @@ #ifndef MPT_NO_NAMESPACE using namespace OPENMPT_NAMESPACE; #endif +namespace openmpt { + namespace mpt = OPENMPT_NAMESPACE::mpt; +} // namespace openmpt namespace openmpt { Index: libopenmpt/libopenmpt_impl.cpp =================================================================== --- libopenmpt/libopenmpt_impl.cpp (revision 14776) +++ libopenmpt/libopenmpt_impl.cpp (working copy) @@ -99,6 +99,9 @@ #ifndef MPT_NO_NAMESPACE using namespace OPENMPT_NAMESPACE; #endif +namespace openmpt { + namespace mpt = OPENMPT_NAMESPACE::mpt; +} // namespace openmpt namespace openmpt { Index: Makefile =================================================================== --- Makefile (revision 14776) +++ Makefile (working copy) @@ -314,7 +314,7 @@ INSTALL_DATA_DIR = $(INSTALL_DIR) INSTALL_MAKE_DIR += -m 0755 -CPPFLAGS += -Icommon -I. -Iinclude +CPPFLAGS += -Isrc -Icommon -I. -Iinclude ifeq ($(XMP_OPENMPT),1) CPPFLAGS += -Iinclude/pugixml/src @@ -859,6 +859,7 @@ COMMON_CXX_SOURCES += \ $(sort $(wildcard common/*.cpp)) \ + $(sort $(wildcard src/mpt/src/*.cpp)) \ SOUNDLIB_CXX_SOURCES += \ $(COMMON_CXX_SOURCES) \ @@ -1364,6 +1365,8 @@ mkdir -p bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/build mkdir -p bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/doc mkdir -p bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/include + mkdir -p bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src + mkdir -p bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt svn export ./LICENSE bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/LICENSE svn export ./README.md bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/README.md svn export ./Makefile bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Makefile @@ -1379,7 +1382,34 @@ svn export ./soundbase bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/soundbase svn export ./soundlib bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/soundlib svn export ./sounddsp bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/sounddsp + svn export ./src/mpt/.clang-format bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/.clang-format + svn export ./src/mpt/LICENSE.BSD-3-Clause.txt bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/LICENSE.BSD-3-Clause.txt + svn export ./src/mpt/LICENSE.BSL-1.0.txt bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/LICENSE.BSL-1.0.txt + svn export ./src/mpt/base bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/base + svn export ./src/mpt/binary bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/binary + svn export ./src/mpt/check bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/check + svn export ./src/mpt/crc bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/crc + #svn export ./src/mpt/crypto bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/crypto + svn export ./src/mpt/detect bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/detect + svn export ./src/mpt/endian bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/endian + svn export ./src/mpt/environment bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/environment + svn export ./src/mpt/exception_text bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/exception_text + svn export ./src/mpt/format bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/format + #svn export ./src/mpt/json bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/json + svn export ./src/mpt/mutex bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/mutex + svn export ./src/mpt/out_of_memory bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/out_of_memory + svn export ./src/mpt/osinfo bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/osinfo + svn export ./src/mpt/parse bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/parse + svn export ./src/mpt/random bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/random + svn export ./src/mpt/string bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/string + svn export ./src/mpt/string_convert bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/string_convert + svn export ./src/mpt/system_error bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/system_error + svn export ./src/mpt/test bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/test + svn export ./src/mpt/uuid bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/uuid + #svn export ./src/mpt/uuid_namespace bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/uuid_namespace svn export ./test bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/test + rm bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/test/mpt_tests_crypto.cpp + rm bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/test/mpt_tests_uuid_namespace.cpp svn export ./libopenmpt bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/libopenmpt svn export ./examples bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/examples svn export ./openmpt123 bin/dist-tar/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/openmpt123 @@ -1403,6 +1433,8 @@ mkdir -p bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/build/premake mkdir -p bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/doc mkdir -p bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/include + mkdir -p bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src + mkdir -p bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt svn export ./LICENSE bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/LICENSE --native-eol CRLF svn export ./README.md bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/README.md --native-eol CRLF svn export ./Makefile bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Makefile --native-eol CRLF @@ -1431,7 +1463,34 @@ svn export ./soundbase bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/soundbase --native-eol CRLF svn export ./soundlib bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/soundlib --native-eol CRLF svn export ./sounddsp bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/sounddsp --native-eol CRLF + svn export ./src/mpt/.clang-format bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/.clang-format --native-eol CRLF + svn export ./src/mpt/LICENSE.BSD-3-Clause.txt bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/LICENSE.BSD-3-Clause.txt --native-eol CRLF + svn export ./src/mpt/LICENSE.BSL-1.0.txt bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/LICENSE.BSL-1.0.txt --native-eol CRLF + svn export ./src/mpt/base bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/base --native-eol CRLF + svn export ./src/mpt/binary bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/binary --native-eol CRLF + svn export ./src/mpt/check bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/check --native-eol CRLF + svn export ./src/mpt/crc bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/crc --native-eol CRLF + #svn export ./src/mpt/crypto bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/crypto --native-eol CRLF + svn export ./src/mpt/detect bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/detect --native-eol CRLF + svn export ./src/mpt/endian bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/endian --native-eol CRLF + svn export ./src/mpt/environment bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/environment --native-eol CRLF + svn export ./src/mpt/exception_text bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/exception_text --native-eol CRLF + svn export ./src/mpt/format bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/format --native-eol CRLF + #svn export ./src/mpt/json bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/json --native-eol CRLF + svn export ./src/mpt/mutex bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/mutex --native-eol CRLF + svn export ./src/mpt/out_of_memory bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/out_of_memory --native-eol CRLF + svn export ./src/mpt/osinfo bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/osinfo --native-eol CRLF + svn export ./src/mpt/parse bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/parse --native-eol CRLF + svn export ./src/mpt/random bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/random --native-eol CRLF + svn export ./src/mpt/string bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/string --native-eol CRLF + svn export ./src/mpt/string_convert bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/string_convert --native-eol CRLF + svn export ./src/mpt/system_error bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/system_error --native-eol CRLF + svn export ./src/mpt/test bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/test --native-eol CRLF + svn export ./src/mpt/uuid bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/uuid --native-eol CRLF + #svn export ./src/mpt/uuid_namespace bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/src/mpt/uuid_namespace --native-eol CRLF svn export ./test bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/test --native-eol CRLF + rm bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/test/mpt_tests_crypto.cpp + rm bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/test/mpt_tests_uuid_namespace.cpp svn export ./libopenmpt bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/libopenmpt --native-eol CRLF svn export ./examples bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/examples --native-eol CRLF svn export ./openmpt123 bin/dist-zip/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/openmpt123 --native-eol CRLF Index: misc/JSON.h =================================================================== --- misc/JSON.h (revision 14776) +++ misc/JSON.h (working copy) @@ -3,9 +3,9 @@ #include "BuildSettings.h" +#include "mpt/json/json.hpp" #ifdef MPT_WITH_NLOHMANNJSON -#include #if MPT_COMPILER_CLANG #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wmismatched-tags" @@ -16,71 +16,8 @@ #endif // MPT_COMPILER_CLANG #endif // MPT_WITH_NLOHMANNJSON -#ifdef MPT_WITH_NLOHMANNJSON - -namespace nlohmann -{ - template <> - struct adl_serializer - { - static void to_json(json& j, const OPENMPT_NAMESPACE::mpt::ustring& val) - { - j = OPENMPT_NAMESPACE::mpt::ToCharset(OPENMPT_NAMESPACE::mpt::Charset::UTF8, val); - } - static void from_json(const json& j, OPENMPT_NAMESPACE::mpt::ustring& val) - { - val = OPENMPT_NAMESPACE::mpt::ToUnicode(OPENMPT_NAMESPACE::mpt::Charset::UTF8, j.get()); - } - }; - template - struct adl_serializer> - { - static void to_json(json& j, const std::map& val) - { - std::map utf8map; - for(const auto &value : val) - { - utf8map[OPENMPT_NAMESPACE::mpt::ToCharset(OPENMPT_NAMESPACE::mpt::Charset::UTF8, value.first)] = value.second; - } - j = std::move(utf8map); - } - static void from_json(const json& j, std::map& val) - { - std::map utf8map = j.get>(); - std::map result; - for(const auto &value : utf8map) - { - result[OPENMPT_NAMESPACE::mpt::ToUnicode(OPENMPT_NAMESPACE::mpt::Charset::UTF8, value.first)] = value.second; - } - val = std::move(result); - } - }; - template - struct adl_serializer> - { - static void to_json(json& j, const std::optional& val) - { - j = (val ? json{*val} : json{nullptr}); - } - static void from_json(const json& j, std::optional& val) - { - if(!j.is_null()) - { - val = j.get(); - } else - { - val = std::nullopt; - } - } - }; -} // namespace nlohmann - -#endif // MPT_WITH_NLOHMANNJSON - - OPENMPT_NAMESPACE_BEGIN - #ifdef MPT_WITH_NLOHMANNJSON namespace JSON { @@ -111,5 +48,4 @@ #endif // MPT_WITH_NLOHMANNJSON - OPENMPT_NAMESPACE_END Index: misc/mptCrypto.cpp =================================================================== --- misc/mptCrypto.cpp (revision 14776) +++ misc/mptCrypto.cpp (nonexistent) @@ -1,48 +0,0 @@ -/* - * mptCrypto.cpp - * ------------- - * Purpose: . - * Notes : (currently none) - * Authors: Joern Heusipp - * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. - */ - -#include "stdafx.h" -#include "mptCrypto.h" - -#include "../common/mptAssert.h" -#include "../common/mptBaseMacros.h" -#include "../common/mptBaseTypes.h" -#include "../common/mptBaseUtils.h" -#include "../common/mptException.h" -#include "../common/mptSpan.h" - -#include -#include - -#include -#include - -#ifdef MODPLUG_TRACKER -#if MPT_OS_WINDOWS -#include -#include -#include -#endif // MPT_OS_WINDOWS -#endif // MODPLUG_TRACKER - - -OPENMPT_NAMESPACE_BEGIN - - -namespace mpt -{ - - -MPT_MSVC_WORKAROUND_LNK4221(mptCrypto) - - -} // namespace mpt - - -OPENMPT_NAMESPACE_END Property changes on: misc/mptCrypto.cpp ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-c++src \ No newline at end of property Index: misc/mptCrypto.h =================================================================== --- misc/mptCrypto.h (revision 14776) +++ misc/mptCrypto.h (working copy) @@ -11,847 +11,5 @@ #include "BuildSettings.h" -#include "../common/mptAssert.h" -#include "../common/mptBaseMacros.h" -#include "../common/mptBaseTypes.h" -#include "../common/mptBaseUtils.h" -#include "../common/mptException.h" -#include "../common/mptSpan.h" -#include "../common/mptStringParse.h" - -#include "../common/misc_util.h" - -#ifdef MODPLUG_TRACKER -#include "../misc/JSON.h" -#endif // MODPLUG_TRACKER - -#include -#include - -#include -#include - -#ifdef MODPLUG_TRACKER -#if MPT_OS_WINDOWS -#include -#include -#include -#include -#endif // MPT_OS_WINDOWS -#endif // MODPLUG_TRACKER - - - -OPENMPT_NAMESPACE_BEGIN - - -namespace mpt -{ - - -#ifdef MODPLUG_TRACKER -#if MPT_OS_WINDOWS - - -namespace crypto -{ - - -class exception : public std::runtime_error -{ -private: - NTSTATUS m_Status; -public: - exception(NTSTATUS status) - : std::runtime_error("crypto error") - , m_Status(status) - { - return; - } -public: - NTSTATUS code() const noexcept - { - return m_Status; - } -}; - - -class security_exception : public std::runtime_error -{ -private: - SECURITY_STATUS m_Status; -public: - security_exception(SECURITY_STATUS status) - : std::runtime_error("crypto error") - , m_Status(status) - { - return; - } -public: - SECURITY_STATUS code() const noexcept - { - return m_Status; - } -}; - - -inline void CheckNTSTATUS(NTSTATUS status) -{ - if(status >= 0) - { - return; - } else if(status == STATUS_NO_MEMORY) - { - mpt::throw_out_of_memory(); - } else - { - throw exception(status); - } -} - - -inline void CheckSECURITY_STATUS(SECURITY_STATUS status) -{ - if(status == ERROR_SUCCESS) - { - return; - } else if(status == NTE_NO_MEMORY) - { - mpt::throw_out_of_memory(); - } else - { - throw security_exception(status); - } -} - - -namespace hash -{ - -struct hash_traits_md5 -{ - static constexpr std::size_t output_bits = 128; - static constexpr std::size_t output_bytes = output_bits / 8; - static constexpr const wchar_t * bcrypt_name = BCRYPT_MD5_ALGORITHM; -}; - -struct hash_traits_sha1 -{ - static constexpr std::size_t output_bits = 160; - static constexpr std::size_t output_bytes = output_bits / 8; - static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA1_ALGORITHM; -}; - -struct hash_traits_sha256 -{ - static constexpr std::size_t output_bits = 256; - static constexpr std::size_t output_bytes = output_bits / 8; - static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA256_ALGORITHM; -}; - -struct hash_traits_sha512 -{ - static constexpr std::size_t output_bits = 512; - static constexpr std::size_t output_bytes = output_bits / 8; - static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA512_ALGORITHM; -}; - -template -class hash_impl -{ - -public: - - using traits = Traits; - - using result_type = std::array; - -private: - - BCRYPT_ALG_HANDLE hAlg = NULL; - std::vector hashState; - std::vector hashResult; - BCRYPT_HASH_HANDLE hHash = NULL; - -private: - - void init() - { - CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hAlg, traits::bcrypt_name, NULL, 0)); - if(!hAlg) - { - throw exception(0); - } - DWORD hashStateSize = 0; - DWORD hashStateSizeSize = 0; - CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&hashStateSize, sizeof(DWORD), &hashStateSizeSize, 0)); - if(hashStateSizeSize != sizeof(DWORD)) - { - throw exception(0); - } - if(hashStateSize <= 0) - { - throw exception(0); - } - hashState.resize(hashStateSize); - DWORD hashResultSize = 0; - DWORD hashResultSizeSize = 0; - CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&hashResultSize, sizeof(DWORD), &hashResultSizeSize, 0)); - if(hashResultSizeSize != sizeof(DWORD)) - { - throw exception(0); - } - if(hashResultSize <= 0) - { - throw exception(0); - } - if(hashResultSize != mpt::extent()) - { - throw exception(0); - } - hashResult.resize(hashResultSize); - CheckNTSTATUS(BCryptCreateHash(hAlg, &hHash, hashState.data(), hashStateSize, NULL, 0, 0)); - if(!hHash) - { - throw exception(0); - } - } - - void cleanup() - { - if(hHash) - { - BCryptDestroyHash(hHash); - hHash = NULL; - } - hashResult.resize(0); - hashResult.shrink_to_fit(); - hashState.resize(0); - hashState.shrink_to_fit(); - if(hAlg) - { - BCryptCloseAlgorithmProvider(hAlg, 0); - hAlg = NULL; - } - } - -public: - - hash_impl() - { - try - { - init(); - } catch(...) - { - cleanup(); - throw; - } - } - hash_impl(const hash_impl &) = delete; - hash_impl &operator=(const hash_impl &) = delete; - ~hash_impl() - { - cleanup(); - } - -public: - - hash_impl &process(mpt::const_byte_span data) - { - CheckNTSTATUS(BCryptHashData(hHash, const_cast(mpt::byte_cast(data.data())), mpt::saturate_cast(data.size()), 0)); - return *this; - } - - result_type result() - { - result_type res = mpt::init_array(std::byte{0}); - CheckNTSTATUS(BCryptFinishHash(hHash, hashResult.data(), mpt::saturate_cast(hashResult.size()), 0)); - MPT_ASSERT(hashResult.size() == mpt::extent()); - std::transform(hashResult.begin(), hashResult.end(), res.begin(), [](BYTE b){ return mpt::as_byte(b); }); - return res; - } - -}; - -using MD5 = hash_impl; -using SHA1 = hash_impl; -using SHA256 = hash_impl; -using SHA512 = hash_impl; - - -} // namespace hash - - -class keystore -{ -public: - enum class domain - { - system = 1, - user = 2, - }; -private: - NCRYPT_PROV_HANDLE hProv = NULL; - domain ProvDomain = domain::user; -private: - void cleanup() - { - if(hProv) - { - NCryptFreeObject(hProv); - hProv = NULL; - } - } -public: - keystore(domain d) - : ProvDomain(d) - { - try - { - CheckSECURITY_STATUS(NCryptOpenStorageProvider(&hProv, MS_KEY_STORAGE_PROVIDER, 0)); - } catch(...) - { - cleanup(); - throw; - } - } - ~keystore() - { - } - operator NCRYPT_PROV_HANDLE() - { - return hProv; - } - keystore::domain store_domain() const - { - return ProvDomain; - } -}; - - - -namespace asymmetric -{ - - - - class signature_verification_failed : public std::runtime_error - { - public: - signature_verification_failed() - : std::runtime_error("Signature Verification failed.") - { - return; - } - }; - - - - inline std::vector jws_get_keynames(const mpt::ustring &jws_) - { - std::vector result; - nlohmann::json jws = nlohmann::json::parse(mpt::ToCharset(mpt::Charset::UTF8, jws_)); - for(const auto & s : jws["signatures"]) - { - result.push_back(s["header"]["kid"]); - } - return result; - } - - - - struct RSASSA_PSS_SHA512_traits - { - using hash_type = mpt::crypto::hash::SHA512; - static constexpr const char * jwk_alg = "PS512"; - }; - - - - template - class rsassa_pss - { - - public: - - using hash_type = typename Traits::hash_type; - static constexpr const char * jwk_alg = Traits::jwk_alg; - - struct public_key_data - { - - mpt::ustring name; - uint32 length = 0; - std::vector public_exp; - std::vector modulus; - - std::vector as_cng_blob() const - { - BCRYPT_RSAKEY_BLOB rsakey_blob; - Clear(rsakey_blob); - rsakey_blob.Magic = BCRYPT_RSAPUBLIC_MAGIC; - rsakey_blob.BitLength = length; - rsakey_blob.cbPublicExp = mpt::saturate_cast(public_exp.size()); - rsakey_blob.cbModulus = mpt::saturate_cast(modulus.size()); - std::vector result(sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size() + modulus.size()); - std::memcpy(result.data(), &rsakey_blob, sizeof(BCRYPT_RSAKEY_BLOB)); - std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB), public_exp.data(), public_exp.size()); - std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size(), modulus.data(), modulus.size()); - return result; - } - - mpt::ustring as_jwk() const - { - nlohmann::json json = nlohmann::json::object(); - json["kid"] = name; - json["kty"] = "RSA"; - json["alg"] = jwk_alg; - json["use"] = "sig"; - json["e"] = Util::BinToBase64url(mpt::as_span(public_exp)); - json["n"] = Util::BinToBase64url(mpt::as_span(modulus)); - return mpt::ToUnicode(mpt::Charset::UTF8, json.dump()); - } - - static public_key_data from_jwk(const mpt::ustring &jwk) - { - public_key_data result; - try - { - nlohmann::json json = nlohmann::json::parse(mpt::ToCharset(mpt::Charset::UTF8, jwk)); - if(json["kty"] != "RSA") - { - throw std::runtime_error("Cannot parse RSA public key JWK."); - } - if(json["alg"] != jwk_alg) - { - throw std::runtime_error("Cannot parse RSA public key JWK."); - } - if(json["use"] != "sig") - { - throw std::runtime_error("Cannot parse RSA public key JWK."); - } - result.name = json["kid"].get(); - result.public_exp = Util::Base64urlToBin(json["e"]); - result.modulus = Util::Base64urlToBin(json["n"]); - result.length = mpt::saturate_cast(result.modulus.size() * 8); - } catch(mpt::out_of_memory e) - { - mpt::rethrow_out_of_memory(e); - } catch(...) - { - throw std::runtime_error("Cannot parse RSA public key JWK."); - } - return result; - } - - static public_key_data from_cng_blob(const mpt::ustring &name, const std::vector &blob) - { - public_key_data result; - BCRYPT_RSAKEY_BLOB rsakey_blob; - Clear(rsakey_blob); - if(blob.size() < sizeof(BCRYPT_RSAKEY_BLOB)) - { - throw std::runtime_error("Cannot parse RSA public key blob."); - } - std::memcpy(&rsakey_blob, blob.data(), sizeof(BCRYPT_RSAKEY_BLOB)); - if(rsakey_blob.Magic != BCRYPT_RSAPUBLIC_MAGIC) - { - throw std::runtime_error("Cannot parse RSA public key blob."); - } - if(blob.size() != sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus) - { - throw std::runtime_error("Cannot parse RSA public key blob."); - } - result.name = name; - result.length = rsakey_blob.BitLength; - result.public_exp = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB), blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp); - result.modulus = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp, blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus); - return result; - } - - }; - - - - static std::vector parse_jwk_set(const mpt::ustring &jwk_set_) - { - std::vector result; - nlohmann::json jwk_set = nlohmann::json::parse(mpt::ToCharset(mpt::Charset::UTF8, jwk_set_)); - for(const auto & k : jwk_set["keys"]) - { - try - { - result.push_back(public_key_data::from_jwk(mpt::ToUnicode(mpt::Charset::UTF8, k.dump()))); - } catch(...) - { - // nothing - } - } - return result; - } - - - - class public_key - { - - private: - - mpt::ustring name; - BCRYPT_ALG_HANDLE hSignAlg = NULL; - BCRYPT_KEY_HANDLE hKey = NULL; - - private: - - void cleanup() - { - if(hKey) - { - BCryptDestroyKey(hKey); - hKey = NULL; - } - if(hSignAlg) - { - BCryptCloseAlgorithmProvider(hSignAlg, 0); - hSignAlg = NULL; - } - } - - public: - - public_key(const public_key_data &data) - { - try - { - name = data.name; - CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0)); - std::vector blob = data.as_cng_blob(); - CheckNTSTATUS(BCryptImportKeyPair(hSignAlg, NULL, BCRYPT_RSAPUBLIC_BLOB, &hKey, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), 0)); - } catch(...) - { - cleanup(); - throw; - } - } - - public_key(const public_key &other) - : public_key(other.get_public_key_data()) - { - return; - } - - public_key &operator=(const public_key &other) - { - if(&other == this) - { - return *this; - } - public_key copy(other); - { - using std::swap; - swap(copy.name, name); - swap(copy.hSignAlg, hSignAlg); - swap(copy.hKey, hKey); - } - return *this; - } - - ~public_key() - { - cleanup(); - } - - mpt::ustring get_name() const - { - return name; - } - - public_key_data get_public_key_data() const - { - DWORD bytes = 0; - CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, 0, &bytes, 0)); - std::vector blob(bytes); - CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); - return public_key_data::from_cng_blob(name, blob); - } - - void verify_hash(typename hash_type::result_type hash, std::vector signature) - { - BCRYPT_PSS_PADDING_INFO paddinginfo; - paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; - paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); - NTSTATUS result = BCryptVerifySignature(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(signature.data()), mpt::saturate_cast(signature.size()), BCRYPT_PAD_PSS); - if(result == 0x00000000 /*STATUS_SUCCESS*/ ) - { - return; - } - if(result == 0xC000A000 /*STATUS_INVALID_SIGNATURE*/ ) - { - throw signature_verification_failed(); - } - CheckNTSTATUS(result); - throw signature_verification_failed(); - } - - void verify(mpt::const_byte_span payload, const std::vector &signature) - { - verify_hash(hash_type().process(payload).result(), signature); - } - - std::vector jws_verify(const mpt::ustring &jws_) - { - nlohmann::json jws = nlohmann::json::parse(mpt::ToCharset(mpt::Charset::UTF8, jws_)); - std::vector payload = Util::Base64urlToBin(jws["payload"]); - nlohmann::json jsignature = nlohmann::json::object(); - bool sigfound = false; - for(const auto & s : jws["signatures"]) - { - if(s["header"]["kid"] == mpt::ToCharset(mpt::Charset::UTF8, name)) - { - jsignature = s; - sigfound = true; - } - } - if(!sigfound) - { - throw signature_verification_failed(); - } - std::vector protectedheaderraw = Util::Base64urlToBin(jsignature["protected"]); - std::vector signature = Util::Base64urlToBin(jsignature["signature"]); - nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); - if(header["typ"] != "JWT") - { - throw signature_verification_failed(); - } - if(header["alg"] != jwk_alg) - { - throw signature_verification_failed(); - } - verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::ToCharset(mpt::Charset::UTF8, Util::BinToBase64url(mpt::as_span(protectedheaderraw)) + U_(".") + Util::BinToBase64url(mpt::as_span(payload)))))).result(), signature); - return payload; - } - - std::vector jws_compact_verify(const mpt::ustring &jws) - { - std::vector parts = mpt::String::Split(jws, U_(".")); - if(parts.size() != 3) - { - throw signature_verification_failed(); - } - std::vector protectedheaderraw = Util::Base64urlToBin(parts[0]); - std::vector payload = Util::Base64urlToBin(parts[1]); - std::vector signature = Util::Base64urlToBin(parts[2]); - nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); - if(header["typ"] != "JWT") - { - throw signature_verification_failed(); - } - if(header["alg"] != jwk_alg) - { - throw signature_verification_failed(); - } - verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::ToCharset(mpt::Charset::UTF8, Util::BinToBase64url(mpt::as_span(protectedheaderraw)) + U_(".") + Util::BinToBase64url(mpt::as_span(payload)))))).result(), signature); - return payload; - } - - }; - - - - static inline void jws_verify_at_least_one(std::vector &keys, const std::vector &expectedPayload, const mpt::ustring &signature) - { - std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); - bool sigchecked = false; - for(const auto & keyname : keynames) - { - for(auto & key : keys) - { - if(key.get_name() == keyname) - { - if(expectedPayload != key.jws_verify(signature)) - { - throw mpt::crypto::asymmetric::signature_verification_failed(); - } - sigchecked = true; - } - } - } - if(!sigchecked) - { - throw mpt::crypto::asymmetric::signature_verification_failed(); - } - } - - - - static inline std::vector jws_verify_at_least_one(std::vector &keys, const mpt::ustring &signature) - { - std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); - for(const auto & keyname : keynames) - { - for(auto & key : keys) - { - if(key.get_name() == keyname) - { - return key.jws_verify(signature); - } - } - } - throw mpt::crypto::asymmetric::signature_verification_failed(); - } - - - - class managed_private_key - { - - private: - - mpt::ustring name; - NCRYPT_KEY_HANDLE hKey = NULL; - - private: - - void cleanup() - { - if(hKey) - { - NCryptFreeObject(hKey); - hKey = NULL; - } - } - - public: - - managed_private_key() = delete; - - managed_private_key(const managed_private_key &) = delete; - - managed_private_key & operator=(const managed_private_key &) = delete; - - managed_private_key(keystore &keystore) - { - try - { - CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, NULL, 0, 0)); - } catch(...) - { - cleanup(); - throw; - } - } - - managed_private_key(keystore &keystore, const mpt::ustring &name_) - : name(name_) - { - try - { - SECURITY_STATUS openKeyStatus = NCryptOpenKey(keystore, &hKey, mpt::ToWide(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0)); - if(openKeyStatus == NTE_BAD_KEYSET) - { - CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, mpt::ToWide(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0))); - DWORD length = mpt::saturate_cast(keysize); - CheckSECURITY_STATUS(NCryptSetProperty(hKey, NCRYPT_LENGTH_PROPERTY, (PBYTE)&length, mpt::saturate_cast(sizeof(DWORD)), 0)); - CheckSECURITY_STATUS(NCryptFinalizeKey(hKey, 0)); - } else - { - CheckSECURITY_STATUS(openKeyStatus); - } - } catch(...) - { - cleanup(); - throw; - } - } - - ~managed_private_key() - { - cleanup(); - } - - void destroy() - { - CheckSECURITY_STATUS(NCryptDeleteKey(hKey, 0)); - name = mpt::ustring(); - hKey = NULL; - } - - public: - - public_key_data get_public_key_data() const - { - DWORD bytes = 0; - CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, NULL, 0, &bytes, 0)); - std::vector blob(bytes); - CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); - return public_key_data::from_cng_blob(name, blob); - } - - std::vector sign_hash(typename hash_type::result_type hash) - { - BCRYPT_PSS_PADDING_INFO paddinginfo; - paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; - paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); - DWORD bytes = 0; - CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), NULL, 0, &bytes, BCRYPT_PAD_PSS)); - std::vector result(bytes); - CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(result.data()), mpt::saturate_cast(result.size()), &bytes, BCRYPT_PAD_PSS)); - return result; - } - - std::vector sign(mpt::const_byte_span payload) - { - return sign_hash(hash_type().process(payload).result()); - } - - mpt::ustring jws_compact_sign(mpt::const_byte_span payload) - { - nlohmann::json protectedheader = nlohmann::json::object(); - protectedheader["typ"] = "JWT"; - protectedheader["alg"] = jwk_alg; - std::string protectedheaderstring = protectedheader.dump(); - std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::ToCharset(mpt::Charset::UTF8, Util::BinToBase64url(mpt::as_span(protectedheaderstring)) + U_(".") + Util::BinToBase64url(payload))))).result()); - return Util::BinToBase64url(mpt::as_span(protectedheaderstring)) + U_(".") + Util::BinToBase64url(payload) + U_(".") + Util::BinToBase64url(mpt::as_span(signature)); - } - - mpt::ustring jws_sign(mpt::const_byte_span payload) - { - nlohmann::json protectedheader = nlohmann::json::object(); - protectedheader["typ"] = "JWT"; - protectedheader["alg"] = jwk_alg; - std::string protectedheaderstring = protectedheader.dump(); - nlohmann::json header = nlohmann::json::object(); - header["kid"] = name; - std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::ToCharset(mpt::Charset::UTF8, Util::BinToBase64url(mpt::as_span(protectedheaderstring)) + U_(".") + Util::BinToBase64url(payload))))).result()); - nlohmann::json jws = nlohmann::json::object(); - jws["payload"] = Util::BinToBase64url(payload); - jws["signatures"] = nlohmann::json::array(); - nlohmann::json jsignature = nlohmann::json::object(); - jsignature["header"] = header; - jsignature["protected"] = Util::BinToBase64url(mpt::as_span(protectedheaderstring)); - jsignature["signature"] = Util::BinToBase64url(mpt::as_span(signature)); - jws["signatures"].push_back(jsignature); - return mpt::ToUnicode(mpt::Charset::UTF8, jws.dump()); - } - - }; - - }; // class rsassa_pss - - - -} // namespace - - -} // namespace cryto - - -#endif // MPT_OS_WINDOWS -#endif // MODPLUG_TRACKER - - -} // namespace mpt - - -OPENMPT_NAMESPACE_END +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" Index: misc/mptUUIDNamespace.cpp =================================================================== --- misc/mptUUIDNamespace.cpp (revision 14776) +++ misc/mptUUIDNamespace.cpp (nonexistent) @@ -1,63 +0,0 @@ -/* - * mptUUIDNamespace.cpp - * -------------------- - * Purpose: UUID utility functions. - * Notes : (currently none) - * Authors: OpenMPT Devs - * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. - */ - - -#include "stdafx.h" -#include "mptUUIDNamespace.h" - -#include "../common/mptUUID.h" -#include "../misc/mptCrypto.h" - - -OPENMPT_NAMESPACE_BEGIN - - -namespace mpt -{ - - -UUID UUIDRFC4122NamespaceV3(const UUID &ns, const mpt::ustring &name) -{ - UUIDbin binns = ns; - std::vector buf; - buf.resize(sizeof(UUIDbin)); - std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(UUIDbin), buf.data()); - std::string utf8name = mpt::ToCharset(mpt::Charset::UTF8, name); - buf.resize(buf.size() + utf8name.length()); - std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(UUIDbin), [](char c){ return mpt::byte_cast(c); }); - std::array hash = mpt::crypto::hash::MD5().process(mpt::as_span(buf)).result(); - UUIDbin uuidbin; - std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); - UUID uuid{uuidbin}; - uuid.MakeRFC4122(3); - return uuid; -} - -UUID UUIDRFC4122NamespaceV5(const UUID &ns, const mpt::ustring &name) -{ - UUIDbin binns = ns; - std::vector buf; - buf.resize(sizeof(UUIDbin)); - std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(UUIDbin), buf.data()); - std::string utf8name = mpt::ToCharset(mpt::Charset::UTF8, name); - buf.resize(buf.size() + utf8name.length()); - std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(UUIDbin), [](char c){ return mpt::byte_cast(c); }); - std::array hash = mpt::crypto::hash::SHA1().process(mpt::as_span(buf)).result(); - UUIDbin uuidbin; - std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); - UUID uuid{uuidbin}; - uuid.MakeRFC4122(5); - return uuid; -} - - -} // namespace mpt - - -OPENMPT_NAMESPACE_END Property changes on: misc/mptUUIDNamespace.cpp ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-c++src \ No newline at end of property Index: misc/mptUUIDNamespace.h =================================================================== --- misc/mptUUIDNamespace.h (revision 14776) +++ misc/mptUUIDNamespace.h (working copy) @@ -12,21 +12,4 @@ #include "BuildSettings.h" -#include "../common/mptString.h" -#include "../common/mptUUID.h" - - -OPENMPT_NAMESPACE_BEGIN - - -namespace mpt { - -// Create a RFC4122 Version 3 namespace UUID -UUID UUIDRFC4122NamespaceV3(const UUID &ns, const mpt::ustring &name); -// Create a RFC4122 Version 5 namespace UUID -UUID UUIDRFC4122NamespaceV5(const UUID &ns, const mpt::ustring &name); - -} // namespace mpt - - -OPENMPT_NAMESPACE_END +#include "mpt/uuid_namespace/uuid_namespace.hpp" Index: mptrack/HTTP.cpp =================================================================== --- mptrack/HTTP.cpp (revision 14776) +++ mptrack/HTTP.cpp (working copy) @@ -117,7 +117,7 @@ { public: LastErrorException() - : exception(mpt::Windows::GetErrorMessage(GetLastError(), GetModuleHandle(TEXT("wininet.dll")))) + : exception(mpt::windows::GetErrorMessage(GetLastError(), GetModuleHandle(TEXT("wininet.dll")))) { } }; Index: mptrack/Mod2wave.cpp =================================================================== --- mptrack/Mod2wave.cpp (revision 14776) +++ mptrack/Mod2wave.cpp (working copy) @@ -1215,7 +1215,7 @@ MPT_ASSERT(!mpt::endian_is_weird()); if(fileEnc->GetConvertedEndianness() != mpt::get_endian()) { - mpt::SwapBufferEndian(m_Settings.FinalSampleFormat.GetSampleSize(), buffer, lRead * encSettings.Channels); + SwapBufferEndian(m_Settings.FinalSampleFormat.GetSampleSize(), buffer, lRead * encSettings.Channels); } fileEnc->WriteInterleavedConverted(lRead, buffer); } @@ -1359,7 +1359,7 @@ MPT_ASSERT(!mpt::endian_is_weird()); if(fileEnc->GetConvertedEndianness() != mpt::get_endian()) { - mpt::SwapBufferEndian(m_Settings.FinalSampleFormat.GetSampleSize(), buffer, framesChunk * channels); + SwapBufferEndian(m_Settings.FinalSampleFormat.GetSampleSize(), buffer, framesChunk * channels); } fileEnc->WriteInterleavedConverted(framesChunk, buffer); } Index: mptrack/Mptrack.cpp =================================================================== --- mptrack/Mptrack.cpp (revision 14776) +++ mptrack/Mptrack.cpp (working copy) @@ -835,7 +835,7 @@ // make the best PRNG available to non-tracker-only code mpt::set_global_prng(m_PRNG.get()); // additionally, seed the C rand() PRNG, just in case any third party library calls rand() - mpt::rng::crand::reseed(RandomDevice()); + mpt::crand::reseed(RandomDevice()); m_Gdiplus = std::make_unique(); Index: mptrack/MPTrackWine.cpp =================================================================== --- mptrack/MPTrackWine.cpp (revision 14776) +++ mptrack/MPTrackWine.cpp (working copy) @@ -92,7 +92,7 @@ namespace WineIntegration { -static mpt::checksum::crc64_jones WineHashVersion(mpt::checksum::crc64_jones crc) +static mpt::crc64_jones WineHashVersion(mpt::crc64_jones crc) { std::string s; s += mpt::ToCharset(mpt::Charset::UTF8, Build::GetVersionStringExtended()); @@ -105,7 +105,7 @@ } -static mpt::checksum::crc64_jones WineHashFile(mpt::checksum::crc64_jones crc, mpt::PathString filename) +static mpt::crc64_jones WineHashFile(mpt::crc64_jones crc, mpt::PathString filename) { InputFile file(filename, TrackerSettings::Instance().MiscCacheCompleteFileBeforeLoading); if(!file.IsValid()) @@ -119,7 +119,7 @@ } -static mpt::checksum::crc64_jones WineHashSettings(mpt::checksum::crc64_jones crc) +static mpt::crc64_jones WineHashSettings(mpt::crc64_jones crc) { std::string result; result += std::string() + "-c"; @@ -318,7 +318,7 @@ { std::string ver; ver += mpt::String::Replace(mpt::ToCharset(mpt::Charset::UTF8, Build::GetVersionStringPure()), std::string(" "), std::string("_")); - mpt::checksum::crc64_jones crc; + mpt::crc64_jones crc; crc = WineHashVersion(crc); crc = WineHashFile(crc, theApp.GetInstallPath() + WineGetSupportZipFilename()); crc = WineHashSettings(crc); Index: mptrack/TrackerSettings.cpp =================================================================== --- mptrack/TrackerSettings.cpp (revision 14776) +++ mptrack/TrackerSettings.cpp (working copy) @@ -13,6 +13,7 @@ #include "Mptrack.h" #include "Moddoc.h" #include "Mainfrm.h" +#include "mpt/environment/environment.hpp" #include "../sounddev/SoundDevice.h" #include "../sounddev/SoundDeviceManager.h" #include "../common/version.h" @@ -471,7 +472,7 @@ if(!VersionInstallGUID.Get().IsValid()) { // No UUID found - generate one. - VersionInstallGUID = mpt::UUID::Generate(); + VersionInstallGUID = mpt::UUID::Generate(mpt::global_prng()); } // Plugins Index: mptrack/UpdateCheck.cpp =================================================================== --- mptrack/UpdateCheck.cpp (revision 14776) +++ mptrack/UpdateCheck.cpp (working copy) @@ -1608,7 +1608,7 @@ CString CUpdateCheck::Error::FormatErrorCode(CString errorMessage, DWORD errorCode) { - errorMessage += mpt::ToCString(mpt::Windows::GetErrorMessage(errorCode, GetModuleHandle(TEXT("wininet.dll")))); + errorMessage += mpt::ToCString(mpt::windows::GetErrorMessage(errorCode, GetModuleHandle(TEXT("wininet.dll")))); return errorMessage; } Index: mptrack/Vstplug.cpp =================================================================== --- mptrack/Vstplug.cpp (revision 14776) +++ mptrack/Vstplug.cpp (working copy) @@ -172,7 +172,7 @@ #ifdef _DEBUG mpt::ustring buf = MPT_UFORMAT("Warning: encountered problem when loading plugin dll. Error {}: {}") ( mpt::ufmt::hex(error) - , mpt::ToUnicode(mpt::Windows::GetErrorMessage(error)) + , mpt::ToUnicode(mpt::windows::GetErrorMessage(error)) ); Reporting::Error(buf, "DEBUG: Error when loading plugin dll"); #endif //_DEBUG Index: openmpt123/.clang-format =================================================================== --- openmpt123/.clang-format (revision 14776) +++ openmpt123/.clang-format (working copy) @@ -122,7 +122,7 @@ SpacesInContainerLiterals: true SpacesInParentheses: true SpacesInSquareBrackets: false -StatementMacros: ['MPT_WARNING'] #? +StatementMacros: [ 'MPT_WARNING', 'MPT_TEST_GROUP_INLINE_IDENTIFIER', 'MPT_TEST_GROUP_INLINE', 'MPT_TEST_GROUP_STATIC' ] #? TabWidth: 2 TypenameMacros: [] #? UseCRLF: false Index: openmpt123/openmpt123.cpp =================================================================== --- openmpt123/openmpt123.cpp (revision 14776) +++ openmpt123/openmpt123.cpp (working copy) @@ -1601,7 +1601,7 @@ // Only MSVC has std::ifstream::ifstream(std::wstring). // Fake it for other compilers using _wfopen(). std::string data; - FILE * f = _wfopen( utf8_to_wstring( filename ).c_str(), L"rb" ); + FILE * f = _wfopen( mpt::convert( mpt::common_encoding::utf8, filename ).c_str(), L"rb" ); if ( f ) { while ( !feof( f ) ) { static const std::size_t BUFFER_SIZE = 4096; @@ -1615,7 +1615,7 @@ file_stream.str( data ); filesize = data.length(); #elif defined(_MSC_VER) && defined(UNICODE) - file_stream.open( utf8_to_wstring( filename ), std::ios::binary ); + file_stream.open( mpt::convert( mpt::common_encoding::utf8, filename ), std::ios::binary ); file_stream.seekg( 0, std::ios::end ); filesize = file_stream.tellg(); file_stream.seekg( 0, std::ios::beg ); @@ -1677,7 +1677,7 @@ // Only MSVC has std::ifstream::ifstream(std::wstring). // Fake it for other compilers using _wfopen(). std::string data; - FILE * f = _wfopen( utf8_to_wstring( filename ).c_str(), L"rb" ); + FILE * f = _wfopen( mpt::convert( mpt::common_encoding::utf8, filename ).c_str(), L"rb" ); if ( f ) { while ( !feof( f ) ) { static const std::size_t BUFFER_SIZE = 4096; @@ -1691,7 +1691,7 @@ file_stream.str( data ); filesize = data.length(); #elif defined(_MSC_VER) && defined(UNICODE) - file_stream.open( utf8_to_wstring( filename ), std::ios::binary ); + file_stream.open( mpt::convert( mpt::common_encoding::utf8, filename ), std::ios::binary ); file_stream.seekg( 0, std::ios::end ); filesize = file_stream.tellg(); file_stream.seekg( 0, std::ios::beg ); @@ -1844,7 +1844,7 @@ // Only MSVC has std::ifstream::ifstream(std::wstring). // Fake it for other compilers using _wfopen(). std::string data; - FILE * f = _wfopen( utf8_to_wstring( filename ).c_str(), L"rb" ); + FILE * f = _wfopen( mpt::convert( mpt::common_encoding::utf8, filename ).c_str(), L"rb" ); if ( f ) { while ( !feof( f ) ) { static const std::size_t BUFFER_SIZE = 4096; @@ -1857,7 +1857,7 @@ } file_stream.str( data ); #elif defined(_MSC_VER) && defined(UNICODE) - file_stream.open( utf8_to_wstring( filename ), std::ios::binary ); + file_stream.open( mpt::convert( mpt::common_encoding::utf8, filename ), std::ios::binary ); #else file_stream.open( filename, std::ios::binary ); #endif @@ -1906,7 +1906,7 @@ newfile = line; } else { #if defined(WIN32) - newfile = wstring_to_utf8( locale_to_wstring( line ) ); + newfile = mpt::convert( mpt::common_encoding::utf8, mpt::logical_encoding::locale, line ); #else newfile = line; #endif @@ -1916,7 +1916,7 @@ newfile = line; } else { #if defined(WIN32) - newfile = wstring_to_utf8( locale_to_wstring( line ) ); + newfile = mpt::convert( mpt::common_encoding::utf8, mpt::logical_encoding::locale, line ); #else newfile = line; #endif @@ -2279,7 +2279,7 @@ std::vector args; #if defined(WIN32) && defined(UNICODE) for ( int arg = 0; arg < wargc; ++arg ) { - args.push_back( wstring_to_utf8( wargv[arg] ) ); + args.push_back( mpt::convert( mpt::common_encoding::utf8, wargv[arg] ) ); } #else args = std::vector( argv, argv + argc ); Index: openmpt123/openmpt123.hpp =================================================================== --- openmpt123/openmpt123.hpp (revision 14776) +++ openmpt123/openmpt123.hpp (working copy) @@ -12,6 +12,12 @@ #include "openmpt123_config.hpp" +#include "mpt/base/compiletime_warning.hpp" +#include "mpt/base/preprocessor.hpp" +#include "mpt/string/convert.hpp" + +#include + namespace openmpt123 { struct exception : public openmpt::exception { @@ -37,660 +43,6 @@ -#if defined(WIN32) - - - -static inline std::string wstring_to_utf8( const std::wstring & unicode_string ) { - std::string utf8_string; - int source_length = ( unicode_string.size() < static_cast( std::numeric_limits::max() ) ) ? static_cast( unicode_string.size() ) : std::numeric_limits::max(); - int required_size = WideCharToMultiByte( CP_UTF8, 0, unicode_string.data(), source_length, NULL, 0, NULL, NULL ); - if ( required_size > 0 ) { - utf8_string.resize( required_size ); - WideCharToMultiByte( CP_UTF8, 0, unicode_string.data(), source_length, utf8_string.data(), required_size, NULL, NULL ); - } - return utf8_string; -} - -static inline std::wstring utf8_to_wstring( const std::string & utf8_string ) { - std::wstring unicode_string; - int source_length = ( utf8_string.size() < static_cast( std::numeric_limits::max() ) ) ? static_cast( utf8_string.size() ) : std::numeric_limits::max(); - int required_size = MultiByteToWideChar( CP_UTF8, 0, utf8_string.data(), source_length, NULL, 0 ); - if ( required_size > 0 ) { - unicode_string.resize( required_size ); - MultiByteToWideChar( CP_UTF8, 0, utf8_string.data(), source_length, unicode_string.data(), required_size ); - } - return unicode_string; -} - -static inline std::string wstring_to_locale( const std::wstring & unicode_string ) { - std::string locale_string; - int source_length = ( unicode_string.size() < static_cast( std::numeric_limits::max() ) ) ? static_cast( unicode_string.size() ) : std::numeric_limits::max(); - int required_size = WideCharToMultiByte( CP_ACP, 0, unicode_string.data(), source_length, NULL, 0, NULL, NULL ); - if ( required_size > 0 ) { - locale_string.resize( required_size ); - WideCharToMultiByte( CP_ACP, 0, unicode_string.data(), source_length, locale_string.data(), required_size, NULL, NULL ); - } - return locale_string; -} - -static inline std::wstring locale_to_wstring( const std::string & locale_string ) { - std::wstring unicode_string; - int source_length = ( locale_string.size() < static_cast( std::numeric_limits::max() ) ) ? static_cast( locale_string.size() ) : std::numeric_limits::max(); - int required_size = MultiByteToWideChar( CP_ACP, 0, locale_string.data(), source_length, NULL, 0 ); - if ( required_size > 0 ) { - unicode_string.resize( required_size ); - MultiByteToWideChar( CP_ACP, 0, locale_string.data(), source_length, unicode_string.data(), required_size ); - } - return unicode_string; -} - - - -#endif - - - -/* -default 1:1 mapping -static constexpr char32_t CharsetTableISO8859_1[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, - 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, - 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, - 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, - 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, - 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, - 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, - 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, - 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff -}; -*/ - -static constexpr char32_t CharsetTableISO8859_15[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, - 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, - 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, - 0x00a0,0x00a1,0x00a2,0x00a3,0x20ac,0x00a5,0x0160,0x00a7,0x0161,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, - 0x00b0,0x00b1,0x00b2,0x00b3,0x017d,0x00b5,0x00b6,0x00b7,0x017e,0x00b9,0x00ba,0x00bb,0x0152,0x0153,0x0178,0x00bf, - 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, - 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, - 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, - 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff -}; - -static constexpr char32_t CharsetTableWindows1252[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, - 0x20ac,0x0081,0x201a,0x0192,0x201e,0x2026,0x2020,0x2021,0x02c6,0x2030,0x0160,0x2039,0x0152,0x008d,0x017d,0x008f, - 0x0090,0x2018,0x2019,0x201c,0x201d,0x2022,0x2013,0x2014,0x02dc,0x2122,0x0161,0x203a,0x0153,0x009d,0x017e,0x0178, - 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, - 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, - 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, - 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, - 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, - 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff -}; - -static constexpr char32_t CharsetTableCP437[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x2302, - 0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7,0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5, - 0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9,0x00ff,0x00d6,0x00dc,0x00a2,0x00a3,0x00a5,0x20a7,0x0192, - 0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba,0x00bf,0x2310,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb, - 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556,0x2555,0x2563,0x2551,0x2557,0x255d,0x255c,0x255b,0x2510, - 0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x255e,0x255f,0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x2567, - 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256b,0x256a,0x2518,0x250c,0x2588,0x2584,0x258c,0x2590,0x2580, - 0x03b1,0x00df,0x0393,0x03c0,0x03a3,0x03c3,0x00b5,0x03c4,0x03a6,0x0398,0x03a9,0x03b4,0x221e,0x03c6,0x03b5,0x2229, - 0x2261,0x00b1,0x2265,0x2264,0x2320,0x2321,0x00f7,0x2248,0x00b0,0x2219,0x00b7,0x221a,0x207f,0x00b2,0x25a0,0x00a0 -}; - -static constexpr char32_t CharsetTableCP850[256] = { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, - 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, - 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, - 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, - 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, - 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, - 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x2302, - 0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7,0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5, - 0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9,0x00ff,0x00d6,0x00dc,0x00F8,0x00a3,0x00D8,0x00D7,0x0192, - 0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba,0x00bf,0x00AE,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb, - 0x2591,0x2592,0x2593,0x2502,0x2524,0x00C1,0x00C2,0x00C0,0x00A9,0x2563,0x2551,0x2557,0x255d,0x00A2,0x00A5,0x2510, - 0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x00E3,0x00C3,0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x00A4, - 0x00F0,0x00D0,0x00CA,0x00CB,0x00C8,0x0131,0x00CD,0x00CE,0x00CF,0x2518,0x250c,0x2588,0x2584,0x00A6,0x00CC,0x2580, - 0x00D3,0x00df,0x00D4,0x00D2,0x00F5,0x00D5,0x00b5,0x00FE,0x00DE,0x00DA,0x00DB,0x00D9,0x00FD,0x00DD,0x00AF,0x00B4, - 0x00AD,0x00b1,0x2017,0x00BE,0x00B6,0x00A7,0x00f7,0x00B8,0x00b0,0x00A8,0x00b7,0x00B9,0x00B3,0x00b2,0x25a0,0x00a0 -}; - - -#if defined(__DJGPP__) -using widechar = char32_t; -using widestring = std::u32string; -static constexpr widechar wide_default_replacement = 0xFFFD; -#else // !__DJGPP__ -using widechar = wchar_t; -using widestring = std::wstring; -static constexpr widechar wide_default_replacement = L'\uFFFD'; -#endif // !__DJGPP__ - - -static inline widestring From8bit(const std::string &str, const char32_t (&table)[256], widechar replacement = wide_default_replacement) -{ - widestring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - std::size_t c = static_cast(static_cast(str[i])); - if(c < std::size(table)) - { - res.push_back(static_cast(table[c])); - } else - { - res.push_back(replacement); - } - } - return res; -} - -static inline std::string To8bit(const widestring &str, const char32_t (&table)[256], char replacement = '?') -{ - std::string res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - char32_t c = static_cast(str[i]); - bool found = false; - // Try non-control characters first. - // In cases where there are actual characters mirrored in this range (like in AMS/AMS2 character sets), - // characters in the common range are preferred this way. - for(std::size_t x = 0x20; x < std::size(table); ++x) - { - if(c == table[x]) - { - res.push_back(static_cast(static_cast(x))); - found = true; - break; - } - } - if(!found) - { - // try control characters - for(std::size_t x = 0x00; x < std::size(table) && x < 0x20; ++x) - { - if(c == table[x]) - { - res.push_back(static_cast(static_cast(x))); - found = true; - break; - } - } - } - if(!found) - { - res.push_back(replacement); - } - } - return res; -} - -static inline widestring FromAscii(const std::string &str, widechar replacement = wide_default_replacement) -{ - widestring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - std::uint8_t c = str[i]; - if(c <= 0x7f) - { - res.push_back(static_cast(static_cast(c))); - } else - { - res.push_back(replacement); - } - } - return res; -} - -static inline std::string ToAscii(const widestring &str, char replacement = '?') -{ - std::string res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - char32_t c = static_cast(str[i]); - if(c <= 0x7f) - { - res.push_back(static_cast(static_cast(c))); - } else - { - res.push_back(replacement); - } - } - return res; -} - -static inline widestring FromISO_8859_1(const std::string &str, widechar replacement = wide_default_replacement) -{ - static_cast( replacement ); - widestring res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - std::uint8_t c = str[i]; - res.push_back(static_cast(static_cast(c))); - } - return res; -} - -static inline std::string ToISO_8859_1(const widestring &str, char replacement = '?') -{ - std::string res; - res.reserve(str.length()); - for(std::size_t i = 0; i < str.length(); ++i) - { - char32_t c = static_cast(str[i]); - if(c <= 0xff) - { - res.push_back(static_cast(static_cast(c))); - } else - { - res.push_back(replacement); - } - } - return res; -} - - -#if !defined(__DJGPP__) && !defined(__EMSCRIPTEN__) - -// Note: -// -// std::codecvt::out in LLVM libc++ does not advance in and out pointers when -// running into a non-convertible character. This can happen when no locale is -// set on FreeBSD or MacOSX. This behaviour violates the C++ standard. -// -// We apply the following (albeit costly, even on other platforms) work-around: -// If the conversion errors out and does not advance the pointers at all, we -// retry the conversion with a space character prepended to the string. If it -// still does error out, we retry the whole conversion character by character. -// This is costly even on other platforms in one single case: The first -// character is an invalid Unicode code point or otherwise not convertible. Any -// following non-convertible characters are not a problem. - -static inline std::wstring LocaleDecode(const std::string &str, const std::locale & locale, wchar_t replacement = L'\uFFFD', int retry = 0, bool * progress = nullptr) -{ - if(str.empty()) - { - return std::wstring(); - } - std::vector out; - using codecvt_type = std::codecvt; - std::mbstate_t state = std::mbstate_t(); - const codecvt_type & facet = std::use_facet(locale); - codecvt_type::result result = codecvt_type::partial; - const char * in_begin = str.data(); - const char * in_end = in_begin + str.size(); - out.resize((in_end - in_begin) * (facet.max_length() + std::size_t{1})); - wchar_t * out_begin = &(out[0]); - wchar_t * out_end = &(out[0]) + out.size(); - const char * in_next = nullptr; - wchar_t * out_next = nullptr; - do - { - if(retry == 2) - { - for(;;) - { - in_next = nullptr; - out_next = nullptr; - result = facet.in(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); - if(result == codecvt_type::partial && in_next == in_begin + 1) - { - in_begin = in_next; - out_begin = out_next; - continue; - } else - { - break; - } - } - } else - { - in_next = nullptr; - out_next = nullptr; - result = facet.in(state, in_begin, in_end, in_next, out_begin, out_end, out_next); - } - if(result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) - { - out.resize(out.size() * 2); - in_begin = in_next; - out_begin = &(out[0]) + (out_next - out_begin); - out_end = &(out[0]) + out.size(); - continue; - } - if(retry == 0) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - bool made_progress = true; - LocaleDecode(std::string(" ") + str, locale, replacement, 1, &made_progress); - if(!made_progress) - { - return LocaleDecode(str, locale, replacement, 2); - } - } - } else if(retry == 1) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - *progress = false; - } else - { - *progress = true; - } - return std::wstring(); - } - if(result == codecvt_type::error) - { - ++in_next; - *out_next = replacement; - ++out_next; - } - in_begin = in_next; - out_begin = out_next; - } while((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); - return std::wstring(&(out[0]), out_next); -} - -static inline std::string LocaleEncode(const std::wstring &str, const std::locale & locale, char replacement = '?', int retry = 0, bool * progress = nullptr) -{ - if(str.empty()) - { - return std::string(); - } - std::vector out; - using codecvt_type = std::codecvt; - std::mbstate_t state = std::mbstate_t(); - const codecvt_type & facet = std::use_facet(locale); - codecvt_type::result result = codecvt_type::partial; - const wchar_t * in_begin = str.data(); - const wchar_t * in_end = in_begin + str.size(); - out.resize((in_end - in_begin) * (facet.max_length() + std::size_t{1})); - char * out_begin = &(out[0]); - char * out_end = &(out[0]) + out.size(); - const wchar_t * in_next = nullptr; - char * out_next = nullptr; - do - { - if(retry == 2) - { - for(;;) - { - in_next = nullptr; - out_next = nullptr; - result = facet.out(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); - if(result == codecvt_type::partial && in_next == in_begin + 1) - { - in_begin = in_next; - out_begin = out_next; - continue; - } else - { - break; - } - } - } else - { - in_next = nullptr; - out_next = nullptr; - result = facet.out(state, in_begin, in_end, in_next, out_begin, out_end, out_next); - } - if(result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) - { - out.resize(out.size() * 2); - in_begin = in_next; - out_begin = &(out[0]) + (out_next - out_begin); - out_end = &(out[0]) + out.size(); - continue; - } - if(retry == 0) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - bool made_progress = true; - LocaleEncode(std::wstring(L" ") + str, locale, replacement, 1, &made_progress); - if(!made_progress) - { - return LocaleEncode(str, locale, replacement, 2); - } - } - } else if(retry == 1) - { - if(result == codecvt_type::error && in_next == in_begin && out_next == out_begin) - { - *progress = false; - } else - { - *progress = true; - } - return std::string(); - } - if(result == codecvt_type::error) - { - ++in_next; - *out_next = replacement; - ++out_next; - } - in_begin = in_next; - out_begin = out_next; - } while((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); - return std::string(&(out[0]), out_next); -} - - -static inline std::wstring FromLocale(const std::string &str, wchar_t replacement = L'\uFFFD') -{ - return LocaleDecode(str, std::locale(""), replacement); -} - -static inline std::string ToLocale(const std::wstring &str, char replacement = '?') -{ - return LocaleEncode(str, std::locale(""), replacement); -} - - - -#endif // !__DJGPP__ && !__EMSCRIPTEN - - - -static inline widestring FromUTF8(const std::string &str, widechar replacement = wide_default_replacement) -{ - const std::string &in = str; - - widestring out; - - // state: - std::size_t charsleft = 0; - char32_t ucs4 = 0; - - for ( std::uint8_t c : in ) { - - if ( charsleft == 0 ) { - - if ( ( c & 0x80 ) == 0x00 ) { - out.push_back( (wchar_t)c ); - } else if ( ( c & 0xE0 ) == 0xC0 ) { - ucs4 = c & 0x1F; - charsleft = 1; - } else if ( ( c & 0xF0 ) == 0xE0 ) { - ucs4 = c & 0x0F; - charsleft = 2; - } else if ( ( c & 0xF8 ) == 0xF0 ) { - ucs4 = c & 0x07; - charsleft = 3; - } else { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - - } else { - - if ( ( c & 0xC0 ) != 0x80 ) { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - ucs4 <<= 6; - ucs4 |= c & 0x3F; - charsleft--; - - if ( charsleft == 0 ) { - if constexpr ( sizeof( widechar ) == 2 ) { - if ( ucs4 > 0x1fffff ) { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - if ( ucs4 <= 0xffff ) { - out.push_back( static_cast(ucs4) ); - } else { - std::uint32_t surrogate = static_cast(ucs4) - 0x10000; - std::uint16_t hi_sur = static_cast( ( 0x36 << 10 ) | ( (surrogate>>10) & ((1<<10)-1) ) ); - std::uint16_t lo_sur = static_cast( ( 0x37 << 10 ) | ( (surrogate>> 0) & ((1<<10)-1) ) ); - out.push_back( hi_sur ); - out.push_back( lo_sur ); - } - } else { - out.push_back( static_cast( ucs4 ) ); - } - ucs4 = 0; - } - - } - - } - - if ( charsleft != 0 ) { - out.push_back( replacement ); - ucs4 = 0; - charsleft = 0; - } - - return out; - -} - -static inline std::string ToUTF8(const widestring &str, char replacement = '?') -{ - const widestring &in = str; - - std::string out; - - for ( std::size_t i=0; i( wc ); - if ( i + 1 < in.length() ) { - // check for surrogate pair - std::uint16_t hi_sur = in[i+0]; - std::uint16_t lo_sur = in[i+1]; - if ( hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37 ) { - // surrogate pair - ++i; - hi_sur &= (1<<10)-1; - lo_sur &= (1<<10)-1; - ucs4 = ( static_cast(hi_sur) << 10 ) | ( static_cast(lo_sur) << 0 ); - } else { - // no surrogate pair - ucs4 = static_cast( c ); - } - } else { - // no surrogate possible - ucs4 = static_cast( c ); - } - } else { - ucs4 = static_cast( wc ); - } - - if ( ucs4 > 0x1fffff ) { - out.push_back( replacement ); - continue; - } - - std::uint8_t utf8[6]; - std::size_t numchars = 0; - for ( numchars = 0; numchars < 6; numchars++ ) { - utf8[numchars] = ucs4 & 0x3F; - ucs4 >>= 6; - if ( ucs4 == 0 ) { - break; - } - } - numchars++; - - if ( numchars == 1 ) { - out.push_back( utf8[0] ); - continue; - } - - if ( numchars == 2 && utf8[numchars-1] == 0x01 ) { - // generate shortest form - out.push_back( utf8[0] | 0x40 ); - continue; - } - - std::size_t charsleft = numchars; - while ( charsleft > 0 ) { - if ( charsleft == numchars ) { - out.push_back( utf8[ charsleft - 1 ] | ( ((1<> 0 ) & 1; - if ( cf == 0 ) { - active_codepage = regs.x.bx; - system_codepage = regs.x.dx; - } - } + codepage = mpt::djgpp_get_locale_encoding(); #endif return; } @@ -773,26 +114,12 @@ std::string text = pop(); if ( text.length() > 0 ) { #if defined(__DJGPP__) - if ( active_codepage == 0 ) { - s << To8bit( FromUTF8( text ), CharsetTableCP437 ); - } else if ( active_codepage == 437 ) { - s << To8bit( FromUTF8( text ), CharsetTableCP437 ); - } else if ( active_codepage == 850 ) { - s << To8bit( FromUTF8( text ), CharsetTableCP850 ); - } else if ( system_codepage == 437 ) { - s << To8bit( FromUTF8( text ), CharsetTableCP437 ); - } else if ( system_codepage == 850 ) { - s << To8bit( FromUTF8( text ), CharsetTableCP850 ); - } else { - s << To8bit( FromUTF8( text ), CharsetTableCP437 ); - } + s << mpt::convert( codepage, mpt::common_encoding::utf8, text ); #elif defined(__EMSCRIPTEN__) s << text; - #elif defined(WIN32) - s << ToLocale( FromUTF8( text ) ); #else - s << ToLocale( FromUTF8( text ) ); - #endif + s << mpt::convert( mpt::logical_encoding::locale, mpt::common_encoding::utf8, text ); + #endif s.flush(); } } @@ -840,17 +167,17 @@ if ( text.length() > 0 ) { if ( console ) { #if defined(UNICODE) - std::wstring wtext = utf8_to_wstring( text ); + std::wstring wtext = mpt::convert( mpt::common_encoding::utf8, text ); WriteConsole( handle, wtext.data(), static_cast( wtext.size() ), NULL, NULL ); #else - std::string ltext = wstring_to_locale( utf8_to_wstring( text ) ); + std::string ltext = mpt::convert( mpt::logical_encoding::locale, mpt::common_encoding::utf8, text ); WriteConsole( handle, ltext.data(), static_cast( ltext.size() ), NULL, NULL ); #endif } else { #if defined(UNICODE) - s << utf8_to_wstring( text ); + s << mpt::convert( mpt::common_encoding::utf8, text ); #else - s << wstring_to_locale( utf8_to_wstring( text ) ); + s << mpt::convert( mpt::logical_encoding::locale, mpt::common_encoding::utf8, text ); #endif s.flush(); } Index: openmpt123/openmpt123_config.hpp =================================================================== --- openmpt123/openmpt123_config.hpp (revision 14776) +++ openmpt123/openmpt123_config.hpp (working copy) @@ -10,36 +10,8 @@ #ifndef OPENMPT123_CONFIG_HPP #define OPENMPT123_CONFIG_HPP -#define MPT_PP_DEFER(m, ...) m(__VA_ARGS__) -#define MPT_PP_STRINGIFY(x) #x -#define MPT_PP_JOIN_HELPER(a, b) a ## b -#define MPT_PP_JOIN(a, b) MPT_PP_JOIN_HELPER(a, b) -#define MPT_PP_UNIQUE_IDENTIFIER(prefix) MPT_PP_JOIN(prefix , __LINE__) +#define MPT_INLINE_NS mpt_openmpt123 -#if defined(__clang__) -#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) -#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) -#elif defined(_MSC_VER) -#define MPT_WARNING(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) -#define MPT_WARNING_STATEMENT(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) -#elif defined(__GNUC__) -#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) -#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) -#else -#define MPT_WARNING(text) \ - static inline int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) () noexcept { \ - int warning [[deprecated("Warning: " text)]] = 0; \ - return warning; \ - } \ -/**/ -#define MPT_WARNING_STATEMENT(text) \ - int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) = [](){ \ - int warning [[deprecated("Warning: " text)]] = 0; \ - return warning; \ - }() \ -/**/ -#endif - #if defined(HAVE_CONFIG_H) // wrapper for autoconf macros #include "config.h" Index: openmpt123/openmpt123_mmio.hpp =================================================================== --- openmpt123/openmpt123_mmio.hpp (revision 14776) +++ openmpt123/openmpt123_mmio.hpp (working copy) @@ -51,7 +51,7 @@ waveformatex.nAvgBytesPerSec = waveformatex.nSamplesPerSec * waveformatex.nBlockAlign; #if defined(WIN32) && defined(UNICODE) - wchar_t * tmp = _wcsdup( utf8_to_wstring( filename ).c_str() ); + wchar_t * tmp = _wcsdup( mpt::convert( mpt::common_encoding::utf8, filename ).c_str() ); mmio = mmioOpen( tmp, NULL, MMIO_ALLOCBUF | MMIO_READWRITE | MMIO_CREATE ); free( tmp ); tmp = 0; Index: openmpt123/openmpt123_waveout.hpp =================================================================== --- openmpt123/openmpt123_waveout.hpp (revision 14776) +++ openmpt123/openmpt123_waveout.hpp (working copy) @@ -185,7 +185,7 @@ WAVEOUTCAPSW caps; ZeroMemory( &caps, sizeof( caps ) ); waveOutGetDevCapsW( i, &caps, sizeof( caps ) ); - devices << wstring_to_utf8( caps.szPname ); + devices << mpt::convert( mpt::common_encoding::utf8, caps.szPname ); devices << std::endl; } return devices.str(); Index: soundlib/plugins/PluginStructs.h =================================================================== --- soundlib/plugins/PluginStructs.h (revision 14776) +++ soundlib/plugins/PluginStructs.h (working copy) @@ -52,8 +52,8 @@ uint8le reserved; uint32le dwOutputRouting; // 0 = send to master 0x80 + x = send to plugin x uint32le dwReserved[4]; // Reserved for routing info - mpt::charbuf<32, mpt::String::nullTerminated> szName; // User-chosen plugin display name - this is locale ANSI! - mpt::charbuf<64, mpt::String::nullTerminated> szLibraryName; // original DLL name - this is UTF-8! + mpt::modecharbuf<32, mpt::String::nullTerminated> szName; // User-chosen plugin display name - this is locale ANSI! + mpt::modecharbuf<64, mpt::String::nullTerminated> szLibraryName; // original DLL name - this is UTF-8! // Should only be called from SNDMIXPLUGIN::SetBypass() and IMixPlugin::Bypass() void SetBypass(bool bypass = true) { if(bypass) routingFlags |= irBypass; else routingFlags &= uint8(~irBypass); } Index: soundlib/SampleFormats.cpp =================================================================== --- soundlib/SampleFormats.cpp (revision 14776) +++ soundlib/SampleFormats.cpp (working copy) @@ -580,9 +580,9 @@ struct Wave64FileHeader { - GUIDms GuidRIFF; - uint64le FileSize; - GUIDms GuidWAVE; + mpt::GUIDms GuidRIFF; + uint64le FileSize; + mpt::GUIDms GuidWAVE; }; MPT_BINARY_STRUCT(Wave64FileHeader, 40) @@ -590,8 +590,8 @@ struct Wave64ChunkHeader { - GUIDms GuidChunk; - uint64le Size; + mpt::GUIDms GuidChunk; + uint64le Size; }; MPT_BINARY_STRUCT(Wave64ChunkHeader, 24) Index: soundlib/WAVTools.h =================================================================== --- soundlib/WAVTools.h (revision 14776) +++ soundlib/WAVTools.h (working copy) @@ -122,10 +122,10 @@ // Extension of the WAVFormatChunk structure, used if format == formatExtensible struct WAVFormatChunkExtension { - uint16le size; - uint16le validBitsPerSample; - uint32le channelMask; - GUIDms subFormat; + uint16le size; + uint16le validBitsPerSample; + uint32le channelMask; + mpt::GUIDms subFormat; }; MPT_BINARY_STRUCT(WAVFormatChunkExtension, 24) Index: src/mpt/.clang-format =================================================================== --- src/mpt/.clang-format (nonexistent) +++ src/mpt/.clang-format (working copy) @@ -0,0 +1,130 @@ +Language: Cpp +Standard: c++17 + +AccessModifierOffset: -4 #? +AlignAfterOpenBracket: AlwaysBreak +AlignConsecutiveAssignments: false +AlignConsecutiveBitFields: false +AlignConsecutiveDeclarations: false +AlignConsecutiveMacros: true +AlignEscapedNewlines: DontAlign +AlignOperands: DontAlign +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Empty +AllowShortIfStatementsOnASingleLine: false +AllowShortLambdasOnASingleLine: Inline +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: MultiLine + AfterEnum: false + AfterFunction: false + AfterNamespace: false + #AfterObjCDeclaration + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: false + SplitEmptyNamespace: true +#BreakAfterJavaFieldAnnotations +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeComma +BreakStringLiterals: false +ColumnLimit: 0 +CommentPragmas: '' #? +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 #? +ContinuationIndentWidth: 4 #? +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +FixNamespaceComments: true +ForEachMacros: [] +IncludeBlocks: Preserve +IncludeCategories: [] #? +IncludeIsMainRegex: '' #? +IncludeIsMainSourceRegex: '' #? +IndentCaseLabels: true +IndentCaseBlocks: true +IndentExternBlock: NoIndent +IndentGotoLabels: false +IndentPPDirectives: None +InsertTrailingCommas: None +#BeforeHash +IndentWidth: 4 +IndentWrappedFunctionNames: true +#JavaImportGroups +#JavaScriptQuotes +#JavaScriptWrapImports +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '^MPT_TEST_GROUP_BEGIN$' #? +MacroBlockEnd: '^MPT_TEST_GROUP_END$' #? +MaxEmptyLinesToKeep: 5 +NamespaceIndentation: None +NamespaceMacros: [] #? +#ObjCBinPackProtocolList +#ObjCBlockIndentWidth +#ObjCBreakBeforeNestedBlockParam +#ObjCSpaceAfterProperty +#ObjCSpaceBeforeProtocolList +#PenaltyBreakAssignment +#PenaltyBreakBeforeFirstCallParameter +#PenaltyBreakComment +#PenaltyBreakFirstLessLess +#PenaltyBreakString +#PenaltyBreakTemplateDeclaration +#PenaltyExcessCharacter +#PenaltyReturnTypeOnItsOwnLine +PointerAlignment: Middle +#RawStringFormats +ReflowComments: false +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInParentheses: false +SpacesInSquareBrackets: false +StatementMacros: [ '_Pragma', '__pragma', 'MPT_WARNING', 'MPT_TEST_GROUP_INLINE_IDENTIFIER', 'MPT_TEST_GROUP_INLINE', 'MPT_TEST_GROUP_STATIC' ] #? +TabWidth: 4 +TypenameMacros: [] #? +UseCRLF: false +UseTab: ForContinuationAndIndentation +WhitespaceSensitiveMacros: + - MPT_PP_STRINGIFY Property changes on: src/mpt/.clang-format ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-clang-format \ No newline at end of property Index: src/mpt/LICENSE.BSD-3-Clause.txt =================================================================== --- src/mpt/LICENSE.BSD-3-Clause.txt (nonexistent) +++ src/mpt/LICENSE.BSD-3-Clause.txt (working copy) @@ -0,0 +1,25 @@ +Copyright (c) 2004-2021, OpenMPT Project Developers and Contributors +Copyright (c) 1997-2003, Olivier Lapicque +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenMPT project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Property changes on: src/mpt/LICENSE.BSD-3-Clause.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: src/mpt/LICENSE.BSL-1.0.txt =================================================================== --- src/mpt/LICENSE.BSL-1.0.txt (nonexistent) +++ src/mpt/LICENSE.BSL-1.0.txt (working copy) @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. Property changes on: src/mpt/LICENSE.BSL-1.0.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: src/mpt/base/algorithm.hpp =================================================================== --- src/mpt/base/algorithm.hpp (nonexistent) +++ src/mpt/base/algorithm.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALGORITHM_HPP +#define MPT_BASE_ALGORITHM_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Grows x with an exponential factor suitable for increasing buffer sizes. +// Clamps the result at limit. +// And avoids integer overflows while doing its business. +// The growth factor is 1.5, rounding down, execpt for the initial x==1 case. +template +inline T exponential_grow(const T & x, const Tlimit & limit) { + if (x <= 1) { + return 2; + } + T add = std::min(x >> 1, std::numeric_limits::max() - x); + return std::min(x + add, mpt::saturate_cast(limit)); +} + +template +inline T exponential_grow(const T & x) { + return mpt::exponential_grow(x, std::numeric_limits::max()); +} + + +// Check if val is in [lo,hi] without causing compiler warnings +// if theses checks are always true due to the domain of T. +// GCC does not warn if the type is templated. +template +constexpr bool is_in_range(const T & val, const C & lo, const C & hi) { + return lo <= val && val <= hi; +} + + +template +MPT_CONSTEXPR20_FUN bool contains(const Tcontainer & container, const Tval & value) noexcept(noexcept(std::find(std::begin(container), std::end(container), value))) { + return std::find(std::begin(container), std::end(container), value) != std::end(container); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/algorithm.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/alloc.hpp =================================================================== --- src/mpt/base/alloc.hpp (nonexistent) +++ src/mpt/base/alloc.hpp (working copy) @@ -0,0 +1,157 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALLOC_HPP +#define MPT_BASE_ALLOC_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/memory.hpp" +#include "mpt/base/span.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline mpt::span as_span(std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline mpt::span as_span(const std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline span as_span(std::basic_string & str) { + return span(str.data(), str.size()); +} + +template +inline span as_span(const std::basic_string & str) { + return span(str.data(), str.size()); +} + + + +template +inline std::vector::type> make_vector(T * beg, T * end) { + return std::vector::type>(beg, end); +} + +template +inline std::vector::type> make_vector(T * data, std::size_t size) { + return std::vector::type>(data, data + size); +} + +template +inline std::vector::type> make_vector(mpt::span data) { + return std::vector::type>(data.data(), data.data() + data.size()); +} + +template +inline std::vector::type> make_vector(T (&arr)[N]) { + return std::vector::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::vector::type> make_vector(const std::basic_string & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline std::basic_string::type> make_basic_string(T * beg, T * end) { + return std::basic_string::type>(beg, end); +} + +template +inline std::basic_string::type> make_basic_string(T * data, std::size_t size) { + return std::basic_string::type>(data, data + size); +} + +template +inline std::basic_string::type> make_basic_string(mpt::span data) { + return std::basic_string::type>(data.data(), data.data() + data.size()); +} + +template +inline std::basic_string::type> make_basic_string(T (&arr)[N]) { + return std::basic_string::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::basic_string::type> make_basic_string(const std::vector & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline Tcont1 & append(Tcont1 & cont1, const Tcont2 & cont2) { + cont1.insert(cont1.end(), cont2.begin(), cont2.end()); + return cont1; +} + +template +inline Tcont1 & append(Tcont1 & cont1, Tit2 beg, Tit2 end) { + cont1.insert(cont1.end(), beg, end); + return cont1; +} + + + +template +struct buffer_cast_impl { + inline Tdst operator()(const Tsrc & src) const { + return Tdst(mpt::byte_cast(src.data()), mpt::byte_cast(src.data()) + src.size()); + } +}; + +// casts between vector<->string of byte-castable types +template +inline Tdst buffer_cast(Tsrc src) { + return buffer_cast_impl()(src); +} + + + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } + inline mpt::byte_span operator()(std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALLOC_HPP Property changes on: src/mpt/base/alloc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/arithmetic_shift.hpp =================================================================== --- src/mpt/base/arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/arithmetic_shift.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// mpt::rshift_signed +// mpt::lshift_signed +// Shift a signed integer value in a well-defined manner. +// Does the same thing as MSVC would do. This is verified by the test suite. + +template +constexpr auto rshift_signed_standard(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x >> y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx >>= y; + urx -= roffset >> y; + return static_cast(urx); +} + +template +constexpr auto lshift_signed_standard(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x << y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx <<= y; + urx -= roffset << y; + return static_cast(urx); +} + +#if MPT_COMPILER_SHIFT_SIGNED + +template +constexpr auto rshift_signed_undefined(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x >> y; +} + +template +constexpr auto lshift_signed_undefined(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x << y; +} + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_undefined(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_undefined(x, y); +} + +#else + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_standard(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_standard(x, y); +} + +#endif + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + +template +constexpr auto sar(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto sal(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/array.hpp =================================================================== --- src/mpt/base/array.hpp (nonexistent) +++ src/mpt/base/array.hpp (working copy) @@ -0,0 +1,82 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARRAY_HPP +#define MPT_BASE_ARRAY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct stdarray_extent : std::integral_constant { }; + +template +struct stdarray_extent> : std::integral_constant { }; + +template +struct is_stdarray : std::false_type { }; + +template +struct is_stdarray> : std::true_type { }; + +// mpt::extent is the same as std::extent, +// but also works for std::array, +// and asserts that the given type is actually an array type instead of returning 0. +// use as: +// mpt::extent() +// mpt::extent() +// mpt::extent() +// mpt::extent() +template +constexpr std::size_t extent() noexcept { + using Tarray = typename std::remove_cv::type>::type; + static_assert(std::is_array::value || mpt::is_stdarray::value); + if constexpr (mpt::is_stdarray::value) { + return mpt::stdarray_extent(); + } else { + return std::extent(); + } +} + +template +struct array_size; + +template +struct array_size> { + static constexpr std::size_t size = N; +}; + +template +struct array_size { + static constexpr std::size_t size = N; +}; + + +template +constexpr std::array init_array(const Tx & x) { + std::array result{}; + for (std::size_t i = 0; i < N; ++i) { + result[i] = x; + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARRAY_HPP Property changes on: src/mpt/base/array.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/bit.hpp =================================================================== --- src/mpt/base/bit.hpp (nonexistent) +++ src/mpt/base/bit.hpp (working copy) @@ -0,0 +1,392 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_BIT_HPP +#define MPT_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#endif // C++20 +#include + +#include +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_CXX_AT_LEAST(20) +using std::bit_cast; +#else +// C++2a compatible bit_cast. +// Not implementing constexpr because this is not easily possible pre C++20. +template +MPT_FORCEINLINE typename std::enable_if<(sizeof(Tdst) == sizeof(Tsrc)) && std::is_trivially_copyable::value && std::is_trivially_copyable::value, Tdst>::type bit_cast(const Tsrc & src) noexcept { + Tdst dst{}; + std::memcpy(&dst, &src, sizeof(Tdst)); + return dst; +} +#endif + + + +#if MPT_CXX_AT_LEAST(20) + +using std::endian; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +constexpr mpt::endian get_endian() noexcept { + return mpt::endian::native; +} + +constexpr bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +constexpr bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +constexpr bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#else // !C++20 + +#if !MPT_COMPILER_GENERIC + +#if MPT_COMPILER_MSVC +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define MPT_PLATFORM_BIG_ENDIAN +#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +// fallback: +#if !defined(MPT_PLATFORM_BIG_ENDIAN) && !defined(MPT_PLATFORM_LITTLE_ENDIAN) +// taken from boost/detail/endian.hpp +#if (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) \ + || (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) \ + || (defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN)) +#define MPT_PLATFORM_BIG_ENDIAN +#elif (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) \ + || (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) \ + || (defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN)) +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif defined(__sparc) || defined(__sparc__) \ + || defined(_POWER) || defined(__powerpc__) \ + || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ + || defined(_MIPSEB) || defined(_POWER) \ + || defined(__s390__) +#define MPT_PLATFORM_BIG_ENDIAN +#elif defined(__i386__) || defined(__alpha__) \ + || defined(__ia64) || defined(__ia64__) \ + || defined(_M_IX86) || defined(_M_IA64) \ + || defined(_M_ALPHA) || defined(__amd64) \ + || defined(__amd64__) || defined(_M_AMD64) \ + || defined(__x86_64) || defined(__x86_64__) \ + || defined(_M_X64) || defined(__bfin__) +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +#endif // !MPT_COMPILER_GENERIC + +enum class endian +{ + little = 0x78563412u, + big = 0x12345678u, + weird = 1u, +#if MPT_COMPILER_GENERIC + native = 0u, +#elif defined(MPT_PLATFORM_LITTLE_ENDIAN) + native = little, +#elif defined(MPT_PLATFORM_BIG_ENDIAN) + native = big, +#else + native = 0u, +#endif +}; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +MPT_FORCEINLINE mpt::endian endian_probe() noexcept { + using endian_probe_type = uint32; + static_assert(sizeof(endian_probe_type) == 4); + constexpr endian_probe_type endian_probe_big = 0x12345678u; + constexpr endian_probe_type endian_probe_little = 0x78563412u; + const std::array probe{{std::byte{0x12}, std::byte{0x34}, std::byte{0x56}, std::byte{0x78}}}; + const endian_probe_type test = mpt::bit_cast(probe); + mpt::endian result = mpt::endian::native; + switch (test) { + case endian_probe_big: + result = mpt::endian::big; + break; + case endian_probe_little: + result = mpt::endian::little; + break; + default: + result = mpt::endian::weird; + break; + } + return result; +} + +MPT_FORCEINLINE mpt::endian get_endian() noexcept { +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 6285) // false-positive: ( || ) is always a non-zero constant. +#endif // MPT_COMPILER_MSVC + if constexpr ((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + return mpt::endian::native; + } else { + return mpt::endian_probe(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +} + +MPT_FORCEINLINE bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +MPT_FORCEINLINE bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +MPT_FORCEINLINE bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#endif // C++20 + + + +#if MPT_CXX_AT_LEAST(20) + +using std::bit_ceil; +using std::bit_floor; +using std::bit_width; +using std::countl_one; +using std::countl_zero; +using std::countr_one; +using std::countr_zero; +using std::has_single_bit; +using std::popcount; +using std::rotl; +using std::rotr; + +#else // !C++20 + +// C++20 header. +// Note that we do not use SFINAE here but instead rely on static_assert. + +template +constexpr int popcount(T val) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int result = 0; + while (val > 0) { + if (val & 0x1) { + result++; + } + val >>= 1; + } + return result; +} + +template +constexpr bool has_single_bit(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + return mpt::popcount(x) == 1; +} + +template +constexpr T bit_ceil(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 1; + while (result < x) { + T newresult = result << 1; + if (newresult < result) { + return 0; + } + result = newresult; + } + return result; +} + +template +constexpr T bit_floor(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + if (x == 0) { + return 0; + } + T result = 1; + do { + T newresult = result << 1; + if (newresult < result) { + return result; + } + result = newresult; + } while (result <= x); + return result >> 1; +} + +template +constexpr T bit_width(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 0; + while (x > 0) { + x >>= 1; + result += 1; + } + return result; +} + +template +constexpr int countl_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countl_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr T rotl_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x >> (N - r)) | (x << r); +} + +template +constexpr T rotr_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x << (N - r)) | (x >> r); +} + +template +constexpr T rotl(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotr_impl(x, -s) : ((x >> (N - r)) | (x << r)); +} + +template +constexpr T rotr(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotl_impl(x, -s) : ((x << (N - r)) | (x >> r)); +} + +#endif // C++20 + + + +template +constexpr int lower_bound_entropy_bits(T x_) { + typename std::make_unsigned::type x = static_cast::type>(x_); + return mpt::bit_width(x) == static_cast::type>(mpt::popcount(x)) ? mpt::bit_width(x) : mpt::bit_width(x) - 1; +} + + +template +constexpr bool is_mask(T x) { + static_assert(std::is_integral::value); + typedef typename std::make_unsigned::type unsigned_T; + unsigned_T ux = static_cast(x); + unsigned_T mask = 0; + for (std::size_t bits = 0; bits <= (sizeof(unsigned_T) * 8); ++bits) { + mask = (mask << 1) | 1u; + if (ux == mask) { + return true; + } + } + return false; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_BIT_HPP Property changes on: src/mpt/base/bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/check_platform.hpp =================================================================== --- src/mpt/base/check_platform.hpp (nonexistent) +++ src/mpt/base/check_platform.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CHECK_PLATFORM_HPP +#define MPT_BASE_CHECK_PLATFORM_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +static_assert(sizeof(std::uintptr_t) == sizeof(void *)); +static_assert(std::numeric_limits::digits == 8); + +static_assert(sizeof(char) == 1); + +static_assert(sizeof(std::byte) == 1); +static_assert(alignof(std::byte) == 1); + +static_assert(mpt::arch_bits == static_cast(mpt::pointer_size) * 8); + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CHECK_PLATFORM_HPP Property changes on: src/mpt/base/check_platform.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/compiletime_warning.hpp =================================================================== --- src/mpt/base/compiletime_warning.hpp (nonexistent) +++ src/mpt/base/compiletime_warning.hpp (working copy) @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_COMPILETIME_WARNING_HPP +#define MPT_BASE_COMPILETIME_WARNING_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/preprocessor.hpp" + + + +#if MPT_COMPILER_MSVC + +#define MPT_WARNING(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) +#define MPT_WARNING_STATEMENT(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) + +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) +#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) + +#else + +// portable #pragma message or #warning replacement +#define MPT_WARNING(text) \ + static inline int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME)() noexcept { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + } \ +/**/ +#define MPT_WARNING_STATEMENT(text) \ + int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) = []() { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + }() /**/ + +#endif + + + +#endif // MPT_BASE_COMPILETIME_WARNING_HPP Property changes on: src/mpt/base/compiletime_warning.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/constexpr_throw.hpp =================================================================== --- src/mpt/base/constexpr_throw.hpp (nonexistent) +++ src/mpt/base/constexpr_throw.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CONSTEXPR_THROW_HPP +#define MPT_BASE_CONSTEXPR_THROW_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Work-around for the requirement of at least 1 non-throwing function argument combination in C++ (17,2a). + +template +constexpr bool constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + // cppcheck-suppress identicalConditionAfterEarlyExit + return really; +} + +template +constexpr bool constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + +template +constexpr T constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + return T{}; +} + +template +constexpr T constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CONSTEXPR_THROW_HPP Property changes on: src/mpt/base/constexpr_throw.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect.hpp =================================================================== --- src/mpt/base/detect.hpp (nonexistent) +++ src/mpt/base/detect.hpp (working copy) @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_HPP +#define MPT_BASE_DETECT_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" +#include "mpt/base/detect_libcxx.hpp" +#include "mpt/base/detect_libc.hpp" + + + +#endif // MPT_BASE_DETECT_HPP Property changes on: src/mpt/base/detect.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_compiler.hpp =================================================================== --- src/mpt/base/detect_compiler.hpp (nonexistent) +++ src/mpt/base/detect_compiler.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_COMPILER_HPP +#define MPT_BASE_DETECT_COMPILER_HPP + + + +#define MPT_COMPILER_MAKE_VERSION2(version, sp) ((version)*100 + (sp)) +#define MPT_COMPILER_MAKE_VERSION3(major, minor, patch) ((major)*10000 + (minor)*100 + (patch)) + + + +#if defined(MPT_COMPILER_GENERIC) + +#undef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 1 + +#elif defined(__clang__) && defined(_MSC_VER) && defined(__c2__) + +#error "Clang/C2 is not supported. Please use Clang/LLVM for Windows instead." + +#elif defined(__clang__) + +#define MPT_COMPILER_CLANG 1 +#define MPT_COMPILER_CLANG_VERSION MPT_COMPILER_MAKE_VERSION3(__clang_major__, __clang_minor__, __clang_patchlevel__) +#define MPT_CLANG_AT_LEAST(major, minor, patch) (MPT_COMPILER_CLANG_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_CLANG_BEFORE(major, minor, patch) (MPT_COMPILER_CLANG_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_CLANG_BEFORE(7, 0, 0) +#error "clang version 7 required" +#endif + +#if defined(__clang_analyzer__) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#elif defined(__GNUC__) + +#define MPT_COMPILER_GCC 1 +#define MPT_COMPILER_GCC_VERSION MPT_COMPILER_MAKE_VERSION3(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#define MPT_GCC_AT_LEAST(major, minor, patch) (MPT_COMPILER_GCC_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_GCC_BEFORE(major, minor, patch) (MPT_COMPILER_GCC_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_GCC_BEFORE(8, 1, 0) +#error "GCC version 8.1 required" +#endif + +#elif defined(_MSC_VER) + +#define MPT_COMPILER_MSVC 1 +#if (_MSC_VER >= 1926) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 6) +#elif (_MSC_VER >= 1925) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 5) +#elif (_MSC_VER >= 1924) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 4) +#elif (_MSC_VER >= 1923) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 3) +#elif (_MSC_VER >= 1922) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 2) +#elif (_MSC_VER >= 1921) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 1) +#elif (_MSC_VER >= 1920) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 0) +#elif (_MSC_VER >= 1916) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 9) +#elif (_MSC_VER >= 1915) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 8) +#elif (_MSC_VER >= 1914) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 7) +#elif (_MSC_VER >= 1913) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 6) +#elif (_MSC_VER >= 1912) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 5) +#elif (_MSC_VER >= 1911) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 3) +#elif (_MSC_VER >= 1910) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 0) +#elif (_MSC_VER >= 1900) && defined(_MSVC_LANG) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 3) +#elif (_MSC_VER >= 1900) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 0) +#elif (_MSC_VER >= 1800) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2013, 0) +#elif (_MSC_VER >= 1700) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2012, 0) +#elif (_MSC_VER >= 1600) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2010, 0) +#elif (_MSC_VER >= 1500) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2008, 0) +#else +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2005, 0) +#endif +#define MPT_MSVC_AT_LEAST(version, sp) (MPT_COMPILER_MSVC_VERSION >= MPT_COMPILER_MAKE_VERSION2((version), (sp))) +#define MPT_MSVC_BEFORE(version, sp) (MPT_COMPILER_MSVC_VERSION < MPT_COMPILER_MAKE_VERSION2((version), (sp))) + +#if MPT_MSVC_BEFORE(2017, 9) +#error "MSVC version 2017 15.9 required" +#endif + +#if defined(_PREFAST_) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#else + +#define MPT_COMPILER_GENERIC 1 + +#endif + + + +#ifndef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 0 +#endif +#ifndef MPT_COMPILER_CLANG +#define MPT_COMPILER_CLANG 0 +#define MPT_CLANG_AT_LEAST(major, minor, patch) 0 +#define MPT_CLANG_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_GCC +#define MPT_COMPILER_GCC 0 +#define MPT_GCC_AT_LEAST(major, minor, patch) 0 +#define MPT_GCC_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_MSVC +#define MPT_COMPILER_MSVC 0 +#define MPT_MSVC_AT_LEAST(version, sp) 0 +#define MPT_MSVC_BEFORE(version, sp) 0 +#endif + + + +#if MPT_COMPILER_GENERIC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#if (__cplusplus >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#elif MPT_COMPILER_MSVC + +#if (_MSVC_LANG >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#else + +#define MPT_CXX 17 + +#endif + +// MPT_CXX is stricter than just using __cplusplus directly. +// We will only claim a language version as supported IFF all core language and +// library fatures that we need are actually supported AND working correctly +// (to our needs). + +#define MPT_CXX_AT_LEAST(version) (MPT_CXX >= (version)) +#define MPT_CXX_BEFORE(version) (MPT_CXX < (version)) + + + +#endif // MPT_BASE_DETECT_COMPILER_HPP Property changes on: src/mpt/base/detect_compiler.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libc.hpp =================================================================== --- src/mpt/base/detect_libc.hpp (nonexistent) +++ src/mpt/base/detect_libc.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBC_HPP +#define MPT_BASE_DETECT_LIBC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#include + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBC_GENERIC 1 +#elif MPT_COMPILER_GCC && (defined(__MINGW32__) || defined(__MINGW64__)) +#define MPT_LIBC_MS 1 +#elif defined(__GNU_LIBRARY__) +#define MPT_LIBC_GLIBC 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBC_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBC_MS 1 +#else +#define MPT_LIBC_GENERIC 1 +#endif + +#ifndef MPT_LIBC_GENERIC +#define MPT_LIBC_GENERIC 0 +#endif +#ifndef MPT_LIBC_GLIBC +#define MPT_LIBC_GLIBC 0 +#endif +#ifndef MPT_LIBC_MS +#define MPT_LIBC_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBC_HPP Property changes on: src/mpt/base/detect_libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libcxx.hpp =================================================================== --- src/mpt/base/detect_libcxx.hpp (nonexistent) +++ src/mpt/base/detect_libcxx.hpp (working copy) @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBCXX_HPP +#define MPT_BASE_DETECT_LIBCXX_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#endif // C++20 + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBCXX_GENERIC 1 +#elif defined(_LIBCPP_VERSION) +#define MPT_LIBCXX_LLVM 1 +#elif defined(__GLIBCXX__) || defined(__GLIBCPP__) +#define MPT_LIBCXX_GNU 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBCXX_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBCXX_MS 1 +#else +#define MPT_LIBCXX_GENERIC 1 +#endif + +#ifndef MPT_LIBCXX_GENERIC +#define MPT_LIBCXX_GENERIC 0 +#endif +#ifndef MPT_LIBCXX_LLVM +#define MPT_LIBCXX_LLVM 0 +#endif +#ifndef MPT_LIBCXX_GNU +#define MPT_LIBCXX_GNU 0 +#endif +#ifndef MPT_LIBCXX_MS +#define MPT_LIBCXX_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBCXX_HPP Property changes on: src/mpt/base/detect_libcxx.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_os.hpp =================================================================== --- src/mpt/base/detect_os.hpp (nonexistent) +++ src/mpt/base/detect_os.hpp (working copy) @@ -0,0 +1,109 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_OS_HPP +#define MPT_BASE_DETECT_OS_HPP + + + +// The order of the checks matters! +#if defined(__DJGPP__) +#define MPT_OS_DJGPP 1 +#elif defined(__EMSCRIPTEN__) +#define MPT_OS_EMSCRIPTEN 1 +#if defined(__EMSCRIPTEN_major__) && defined(__EMSCRIPTEN_minor__) +#if (__EMSCRIPTEN_major__ > 1) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ > 39) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ == 39) && (__EMSCRIPTEN_tiny__ >= 7) +// ok +#else +#error "Emscripten >= 1.39.7 is required." +#endif +#endif +#elif defined(_WIN32) +#define MPT_OS_WINDOWS 1 +#if defined(WINAPI_FAMILY) +#include +#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) +#define MPT_OS_WINDOWS_WINRT 0 +#else +#define MPT_OS_WINDOWS_WINRT 1 +#endif +#else // !WINAPI_FAMILY +#define MPT_OS_WINDOWS_WINRT 0 +#endif // WINAPI_FAMILY +#elif defined(__APPLE__) +#define MPT_OS_MACOSX_OR_IOS 1 +//#include "TargetConditionals.h" +//#if TARGET_IPHONE_SIMULATOR +//#elif TARGET_OS_IPHONE +//#elif TARGET_OS_MAC +//#else +//#endif +#elif defined(__HAIKU__) +#define MPT_OS_HAIKU 1 +#elif defined(__ANDROID__) || defined(ANDROID) +#define MPT_OS_ANDROID 1 +#elif defined(__linux__) +#define MPT_OS_LINUX 1 +#elif defined(__DragonFly__) +#define MPT_OS_DRAGONFLYBSD 1 +#elif defined(__FreeBSD__) +#define MPT_OS_FREEBSD 1 +#elif defined(__OpenBSD__) +#define MPT_OS_OPENBSD 1 +#elif defined(__NetBSD__) +#define MPT_OS_NETBSD 1 +#elif defined(__unix__) +#define MPT_OS_GENERIC_UNIX 1 +#else +#define MPT_OS_UNKNOWN 1 +#endif + +#ifndef MPT_OS_DJGPP +#define MPT_OS_DJGPP 0 +#endif +#ifndef MPT_OS_EMSCRIPTEN +#define MPT_OS_EMSCRIPTEN 0 +#endif +#ifndef MPT_OS_WINDOWS +#define MPT_OS_WINDOWS 0 +#endif +#ifndef MPT_OS_WINDOWS_WINRT +#define MPT_OS_WINDOWS_WINRT 0 +#endif +#ifndef MPT_OS_MACOSX_OR_IOS +#define MPT_OS_MACOSX_OR_IOS 0 +#endif +#ifndef MPT_OS_HAIKU +#define MPT_OS_HAIKU 0 +#endif +#ifndef MPT_OS_ANDROID +#define MPT_OS_ANDROID 0 +#endif +#ifndef MPT_OS_LINUX +#define MPT_OS_LINUX 0 +#endif +#ifndef MPT_OS_DRAGONFLYBSD +#define MPT_OS_DRAGONFLYBSD 0 +#endif +#ifndef MPT_OS_FREEBSD +#define MPT_OS_FREEBSD 0 +#endif +#ifndef MPT_OS_OPENBSD +#define MPT_OS_OPENBSD 0 +#endif +#ifndef MPT_OS_NETBSD +#define MPT_OS_NETBSD 0 +#endif +#ifndef MPT_OS_GENERIC_UNIX +#define MPT_OS_GENERIC_UNIX 0 +#endif +#ifndef MPT_OS_UNKNOWN +#define MPT_OS_UNKNOWN 0 +#endif + + + +#endif // MPT_BASE_DETECT_OS.hpp Property changes on: src/mpt/base/detect_os.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_quirks.hpp =================================================================== --- src/mpt/base/detect_quirks.hpp (nonexistent) +++ src/mpt/base/detect_quirks.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_QUIRKS_HPP +#define MPT_BASE_DETECT_QUIRKS_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" + + + +#if MPT_COMPILER_MSVC +// Compiler has multiplication/division semantics when shifting signed integers. +#define MPT_COMPILER_SHIFT_SIGNED 1 +#endif + +#ifndef MPT_COMPILER_SHIFT_SIGNED +#define MPT_COMPILER_SHIFT_SIGNED 0 +#endif + + + +// This should really be based on __STDCPP_THREADS__, but that is not defined by +// GCC or clang. Stupid. +// Just assume multithreaded and disable for platforms we know are +// singlethreaded later on. +#define MPT_PLATFORM_MULTITHREADED 1 + +#if MPT_OS_DJGPP +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + +#if (MPT_OS_EMSCRIPTEN && !defined(__EMSCRIPTEN_PTHREADS__)) +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE +#endif + + + +#if MPT_OS_DJGPP +#define MPT_COMPILER_QUIRK_NO_WCHAR +#endif + + + +#if defined(__arm__) + +#if defined(__SOFTFP__) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#if defined(__VFP_FP__) +// native-endian IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#elif defined(__MAVERICK__) +// little-endian IEEE754, we assume native-endian though +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#else +// not IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 1 +#endif + +#elif defined(__mips__) + +#if defined(__mips_soft_float) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif + +#endif + +#if MPT_OS_EMSCRIPTEN +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 1 +#endif + +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER32 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER32 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER64 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_EMULATED +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#endif + + + +#endif // MPT_BASE_DETECT_QUIRKS_HPP Property changes on: src/mpt/base/detect_quirks.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/floatingpoint.hpp =================================================================== --- src/mpt/base/floatingpoint.hpp (nonexistent) +++ src/mpt/base/floatingpoint.hpp (working copy) @@ -0,0 +1,93 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_FLOATINGPOINT_HPP +#define MPT_BASE_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// fp half +// n/a + +// fp single +using single = float; +namespace float_literals { +constexpr single operator"" _fs(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp double +namespace float_literals { +constexpr double operator"" _fd(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp extended +namespace float_literals { +constexpr long double operator"" _fe(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp quad +// n/a + +using float32 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float32 operator"" _f32(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +using float64 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float64 operator"" _f64(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +template +struct float_traits { + static constexpr bool is_float = !std::numeric_limits::is_integer; + static constexpr bool is_hard = is_float && !MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_soft = is_float && MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_float32 = is_float && (sizeof(T) == 4); + static constexpr bool is_float64 = is_float && (sizeof(T) == 8); + static constexpr bool is_native_endian = is_float && !MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN; + static constexpr bool is_ieee754_binary = is_float && std::numeric_limits::is_iec559 && !MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754; + static constexpr bool is_ieee754_binary32 = is_float && is_ieee754_binary && is_float32; + static constexpr bool is_ieee754_binary64 = is_float && is_ieee754_binary && is_float64; + static constexpr bool is_ieee754_binary32ne = is_float && is_ieee754_binary && is_float32 && is_native_endian; + static constexpr bool is_ieee754_binary64ne = is_float && is_ieee754_binary && is_float64 && is_native_endian; + static constexpr bool is_preferred = is_float && ((is_float32 && MPT_COMPILER_QUIRK_FLOAT_PREFER32) || (is_float64 && MPT_COMPILER_QUIRK_FLOAT_PREFER64)); +}; + +// prefer smaller floats, but try to use IEEE754 floats +using nativefloat = + std::conditional::is_preferred, float32, std::conditional::is_preferred, float64, std::conditional::is_iec559, float, std::conditional::is_iec559, double, std::conditional::is_iec559, long double, float>::type>::type>::type>::type>::type; +namespace float_literals { +constexpr nativefloat operator"" _nf(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_FLOATINGPOINT_HPP Property changes on: src/mpt/base/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/integer.hpp =================================================================== --- src/mpt/base/integer.hpp (nonexistent) +++ src/mpt/base/integer.hpp (working copy) @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_INTEGER_HPP +#define MPT_BASE_INTEGER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using int8 = std::int8_t; +using int16 = std::int16_t; +using int32 = std::int32_t; +using int64 = std::int64_t; +using uint8 = std::uint8_t; +using uint16 = std::uint16_t; +using uint32 = std::uint32_t; +using uint64 = std::uint64_t; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_INTEGER_HPP Property changes on: src/mpt/base/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/macros.hpp =================================================================== --- src/mpt/base/macros.hpp (nonexistent) +++ src/mpt/base/macros.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MACROS_HPP +#define MPT_BASE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +// Advanced inline attributes +#if MPT_COMPILER_MSVC +#define MPT_FORCEINLINE __forceinline +#define MPT_NOINLINE __declspec(noinline) +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_FORCEINLINE __attribute__((always_inline)) inline +#define MPT_NOINLINE __attribute__((noinline)) +#else +#define MPT_FORCEINLINE inline +#define MPT_NOINLINE +#endif + + + +// constexpr +#define MPT_CONSTEXPRINLINE constexpr MPT_FORCEINLINE +#if MPT_CXX_AT_LEAST(20) +#define MPT_CONSTEXPR20_FUN constexpr MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR constexpr +#else // !C++20 +#define MPT_CONSTEXPR20_FUN MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR const +#endif // C++20 + + + +#define MPT_FORCE_CONSTEXPR(expr) [&]() { \ + constexpr auto x = (expr); \ + return x; \ +}() + + + +#if MPT_CXX_AT_LEAST(20) +#define MPT_IS_CONSTANT_EVALUATED20() std::is_constant_evaluated() +#define MPT_IS_CONSTANT_EVALUATED() std::is_constant_evaluated() +#else // !C++20 +#define MPT_IS_CONSTANT_EVALUATED20() false +// this pessimizes the case for C++17 by always assuming constexpr context, which implies always running constexpr-friendly code +#define MPT_IS_CONSTANT_EVALUATED() true +#endif // C++20 + + + +#if MPT_COMPILER_MSVC +#define MPT_MAYBE_CONSTANT_IF(x) \ + __pragma(warning(push)) \ + __pragma(warning(disable : 4127)) \ + if (x) \ + __pragma(warning(pop)) \ +/**/ +#endif + +#if MPT_COMPILER_GCC +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ + if (x) \ + _Pragma("GCC diagnostic pop") \ +/**/ +#endif + +#if MPT_COMPILER_CLANG +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \ + _Pragma("clang diagnostic ignored \"-Wtype-limits\"") \ + _Pragma("clang diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \ + if (x) \ + _Pragma("clang diagnostic pop") \ +/**/ +#endif + +#if !defined(MPT_MAYBE_CONSTANT_IF) +// MPT_MAYBE_CONSTANT_IF disables compiler warnings for conditions that may in some case be either always false or always true (this may turn out to be useful in ASSERTions in some cases). +#define MPT_MAYBE_CONSTANT_IF(x) if (x) +#endif + + + +#if MPT_OS_WINDOWS +#define MPT_UNUSED(x) UNREFERENCED_PARAMETER(x) +#else +#define MPT_UNUSED(x) static_cast(x) +#endif + + + +#define MPT_DISCARD(expr) static_cast(expr) + + + +// Use MPT_RESTRICT to indicate that a pointer is guaranteed to not be aliased. +#if MPT_COMPILER_MSVC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_RESTRICT __restrict +#else +#define MPT_RESTRICT +#endif + + + +#endif // MPT_BASE_MACROS_HPP Property changes on: src/mpt/base/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/math.hpp =================================================================== --- src/mpt/base/math.hpp (nonexistent) +++ src/mpt/base/math.hpp (working copy) @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_EMPTY_HPP +#define MPT_BASE_EMPTY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_OS_DJGPP + +inline double round(const long double val) { + return ::roundl(val); +} + +inline double round(const double val) { + return ::round(val); +} + +inline float round(const float val) { + return ::roundf(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::round +using std::round; + +#endif // MPT_OS_DJGPP + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_EMPTY_HPP Property changes on: src/mpt/base/math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/memory.hpp =================================================================== --- src/mpt/base/memory.hpp (nonexistent) +++ src/mpt/base/memory.hpp (working copy) @@ -0,0 +1,262 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/span.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +using byte_span = mpt::span; +using const_byte_span = mpt::span; + + + +// Tell which types are safe for mpt::byte_cast. +// signed char is actually not allowed to alias into an object representation, +// which means that, if the actual type is not itself signed char but char or +// unsigned char instead, dereferencing the signed char pointer is undefined +// behaviour. +template +struct is_byte_castable : public std::false_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; + + +template +struct is_byte : public std::false_type { }; +template <> +struct is_byte : public std::true_type { }; +template <> +struct is_byte : public std::true_type { }; + + +template +constexpr bool declare_binary_safe(const T &) noexcept { + return false; +} + +constexpr bool declare_binary_safe(const char &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const uint8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const int8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const std::byte &) noexcept { + return true; +} + +// Tell which types are safe to binary write into files. +// By default, no types are safe. +// When a safe type gets defined, +// also specialize this template so that IO functions will work. +template +struct is_binary_safe : public std::conditional::type { }; + +// Generic Specialization for arrays. +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; + + +template +constexpr bool check_binary_size(std::size_t size) noexcept { + return true + && (sizeof(T) == size) + && (alignof(T) == 1) + && std::is_standard_layout::value + && std::has_unique_object_representations::value + && mpt::is_binary_safe::value; +} + + +template +struct byte_cast_impl { + inline Tdst operator()(Tsrc src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + // not checking is_byte_castable here because we are actually + // doing a static_cast and converting the value + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return static_cast(src); + } +}; + +template +struct byte_cast_impl, mpt::span> { + inline mpt::span operator()(mpt::span src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return mpt::as_span(mpt::byte_cast_impl()(src.data()), mpt::byte_cast_impl()(src.data() + src.size())); + } +}; + +template +struct byte_cast_impl { + inline Tdst * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl; + +template +struct void_cast_impl { + inline Tdst * operator()(void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline Tdst * operator()(const void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline const void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +// casts between different byte (char) types or pointers to these types +template +inline Tdst byte_cast(Tsrc src) noexcept { + return byte_cast_impl()(src); +} + +// casts between pointers to void and pointers to byte +template +inline Tdst void_cast(Tsrc src) noexcept { + return void_cast_impl()(src); +} + + + +template +MPT_CONSTEXPRINLINE std::byte as_byte(T src) noexcept { + static_assert(std::is_integral::value); + return static_cast(static_cast(src)); +} + + + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } + inline mpt::byte_span operator()(T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } + inline mpt::byte_span operator()(T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +// In order to be able to partially specialize it, +// as_raw_memory is implemented via a class template. +// Do not overload or specialize as_raw_memory directly. +// Using a wrapper (by default just around a cast to const std::byte *), +// allows for implementing raw memory access +// via on-demand generating a cached serialized representation. +template +inline mpt::const_byte_span as_raw_memory(const T & v) { + return mpt::as_raw_memory_impl()(v); +} +template +inline mpt::byte_span as_raw_memory(T & v) { + return mpt::as_raw_memory_impl()(v); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_MEMORY_HPP Property changes on: src/mpt/base/memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/namespace.hpp =================================================================== --- src/mpt/base/namespace.hpp (nonexistent) +++ src/mpt/base/namespace.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NAMESPACE_HPP +#define MPT_BASE_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/version.hpp" +#include "mpt/base/compiletime_warning.hpp" + + + +#if !defined(MPT_INLINE_NS) + +#define MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) v##a##_##b##_##c##_##d +#define MPT_BUILD_VERSION_NAMESPACE(a, b, c, d) MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) + +#define MPT_VERSION_NAMESPACE MPT_BUILD_VERSION_NAMESPACE(MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH, MPT_VERSION_BUILD) + +#if MPT_OS_WINDOWS +#ifdef UNICODE +#define MPT_VERSION_ABI_OS u +#else +#define MPT_VERSION_ABI_OS 8 +#endif +#else +#define MPT_VERSION_ABI_OS _ +#endif + +#if MPT_LIBC_GENERIC +#define MPT_VERSION_ABI_LIBC _ +#elif MPT_LIBC_MS +#ifdef _DLL +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MDd +#else +#define MPT_VERSION_ABI_LIBC MDr +#endif +#else +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MTd +#else +#define MPT_VERSION_ABI_LIBC MTr +#endif +#endif +#elif MPT_LIBC_GLIBC +#define MPT_VERSION_ABI_LIBC G +#else +#define MPT_VERSION_ABI_LIBC _ +#endif + +#define MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) ABI_##a##_##b +#define MPT_BUILD_ABI_NAMESPACE(a, b) MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) + +#define MPT_ABI_NAMESPACE MPT_BUILD_ABI_NAMESPACE(MPT_VERSION_ABI_OS, MPT_VERSION_ABI_LIBC) + +#if !defined(MPT_PROJECT_NAMESPACE) +MPT_WARNING("Please #define MPT_PROJECT_NAMESPACE or #define MPT_INLINE_NS in build configuration.") +#define MPT_PROJECT_NAMESPACE x +#endif // !MPT_PROJECT_NAMESPACE + +#define MPT_BUILD_INLINE_NS_IMPL(a, b, c) a##_##b##_##c +#define MPT_BUILD_INLINE_NS(a, b, c) MPT_BUILD_INLINE_NS_IMPL(a, b, c) + +#define MPT_INLINE_NS MPT_BUILD_INLINE_NS(MPT_VERSION_NAMESPACE, MPT_ABI_NAMESPACE, MPT_PROJECT_NAMESPACE) + +#endif // !MPT_INLINE_NS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_NAMESPACE_HPP Property changes on: src/mpt/base/namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/numeric.hpp =================================================================== --- src/mpt/base/numeric.hpp (nonexistent) +++ src/mpt/base/numeric.hpp (working copy) @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NUMERIC_HPP +#define MPT_BASE_NUMERIC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/bit.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + return static_cast(x % m); + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; + +// Returns x % m if m != 0, x otherwise. +// i.e. "return (m == 0) ? x : (x % m);", but without causing a warning with stupid older compilers +template +constexpr Tval modulo_if_not_zero(Tval x) { + return ModIfNotZeroImpl().mod(x); +} + +// rounds x up to multiples of target +template +constexpr T align_up(T x, T target) { + return ((x + (target - 1)) / target) * target; +} + +// rounds x down to multiples of target +template +constexpr T align_down(T x, T target) { + return (x / target) * target; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/numeric.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/pointer.hpp =================================================================== --- src/mpt/base/pointer.hpp (nonexistent) +++ src/mpt/base/pointer.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_POINTER_HPP +#define MPT_BASE_POINTER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr int arch_bits = sizeof(void *) * 8; +inline constexpr std::size_t pointer_size = sizeof(void *); + + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tsrc & src) noexcept { + return src; + } +}; + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; + + +template +constexpr Tdst pointer_cast(const Tsrc & src) noexcept { + return pointer_cast_helper::cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_POINTER_HPP Property changes on: src/mpt/base/pointer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/preprocessor.hpp =================================================================== --- src/mpt/base/preprocessor.hpp (nonexistent) +++ src/mpt/base/preprocessor.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_PREPROCESSOR_HPP +#define MPT_BASE_PREPROCESSOR_HPP + + + +#define MPT_PP_DEFER(m, ...) m(__VA_ARGS__) + +#define MPT_PP_STRINGIFY(x) #x + +#define MPT_PP_JOIN_HELPER(a, b) a##b +#define MPT_PP_JOIN(a, b) MPT_PP_JOIN_HELPER(a, b) + +#define MPT_PP_UNIQUE_IDENTIFIER(prefix) MPT_PP_JOIN(prefix, __LINE__) + + + +#endif // MPT_BASE_PREPROCESSOR_HPP Property changes on: src/mpt/base/preprocessor.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_cast.hpp =================================================================== --- src/mpt/base/saturate_cast.hpp (nonexistent) +++ src/mpt/base/saturate_cast.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_CAST_HPP +#define MPT_BASE_SATURATE_CAST_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Saturate the value of src to the domain of Tdst +template +constexpr Tdst saturate_cast(Tsrc src) noexcept { + // This code tries not only to obviously avoid overflows but also to avoid signed/unsigned comparison warnings and type truncation warnings (which in fact would be safe here) by explicit casting. + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_integer); + if constexpr (std::numeric_limits::is_signed && std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::max(static_cast(std::numeric_limits::min()), std::min(src, static_cast(std::numeric_limits::max())))); + } + } else if constexpr (!std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else if constexpr (std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) > sizeof(Tsrc)) { + return static_cast(src); + } else if constexpr (sizeof(Tdst) == sizeof(Tsrc)) { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else { // Tdst unsigned, Tsrc signed + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(std::max(static_cast(0), src)); + } else { + return static_cast(std::max(static_cast(0), std::min(src, static_cast(std::numeric_limits::max())))); + } + } +} + +template +constexpr Tdst saturate_cast(double src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + +template +constexpr Tdst saturate_cast(float src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_CAST_HPP Property changes on: src/mpt/base/saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_round.hpp =================================================================== --- src/mpt/base/saturate_round.hpp (nonexistent) +++ src/mpt/base/saturate_round.hpp (working copy) @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_ROUND_HPP +#define MPT_BASE_SATURATE_ROUND_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/math.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Rounds given double value to nearest integer value of type T. +// Out-of-range values are saturated to the specified integer type's limits. + +template +inline T saturate_round(float val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(long double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_ROUND_HPP Property changes on: src/mpt/base/saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/secure.hpp =================================================================== --- src/mpt/base/secure.hpp (nonexistent) +++ src/mpt/base/secure.hpp (working copy) @@ -0,0 +1,198 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SECURE_HPP +#define MPT_BASE_SECURE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace secure { + + + +inline MPT_NOINLINE void memzero(std::byte * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(void * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(char * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(uint8 * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + + + +template +inline MPT_NOINLINE void clear(T & val) { + std::atomic_signal_fence(std::memory_order_seq_cst); + volatile T * volatile v = &val; + std::atomic_thread_fence(std::memory_order_seq_cst); + *v = T{}; + std::atomic_signal_fence(std::memory_order_seq_cst); +} + + + +class byte { +private: + std::byte value; + +public: + byte() noexcept + : value(std::byte{0}) { + return; + } + explicit byte(std::byte value) noexcept + : value(value) { + return; + } + byte(const byte & other) noexcept + : value(other.value) { + return; + } + byte(byte && other) noexcept + : value(std::move(other.value)) { + mpt::secure::clear(other.value); + } + byte & operator=(const byte & other) noexcept { + if (&other == this) { + return *this; + } + value = other.value; + return *this; + } + byte & operator==(byte && other) noexcept { + if (&other == this) { + return *this; + } + value = std::move(other.value); + mpt::secure::clear(other.value); + return *this; + } + explicit operator std::byte() const noexcept { + return value; + } + ~byte() { + mpt::secure::clear(value); + } +}; + + + +class buffer { +private: + std::vector m_data; + +public: + buffer() + : m_data(0) { + return; + } + explicit buffer(const std::vector & data) + : m_data(data) { + return; + } + explicit buffer(const std::byte * beg, const std::byte * end) + : m_data(beg, end) { + return; + } + buffer(const buffer & other) + : m_data(other.m_data) { + return; + } + buffer(buffer && other) noexcept + : m_data(std::move(other.m_data)) { + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + } + buffer & operator=(const buffer & other) { + if (&other == this) { + return *this; + } + m_data = other.m_data; + return *this; + } + buffer & operator=(buffer && other) noexcept { + if (&other == this) { + return *this; + } + m_data = std::move(other.m_data); + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + return *this; + } + ~buffer() { + mpt::secure::memzero(m_data.data(), m_data.size()); + m_data.resize(0); + m_data.shrink_to_fit(); + } + explicit operator std::vector() const { + return m_data; + } + const std::byte * data() const { + return m_data.data(); + } + std::byte * data() { + return m_data.data(); + } + std::size_t size() const { + return m_data.size(); + } +}; + + + +} // namespace secure + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SECURE_HPP Property changes on: src/mpt/base/secure.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/semantic_version.hpp =================================================================== --- src/mpt/base/semantic_version.hpp (nonexistent) +++ src/mpt/base/semantic_version.hpp (working copy) @@ -0,0 +1,94 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SEMANTIC_VERSION_HPP +#define MPT_BASE_SEMANTIC_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/version.hpp" + + + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct semantic_version { + unsigned long long major = 0; + unsigned long long minor = 0; + unsigned long long patch = 0; + constexpr std::tuple as_tuple() const noexcept { + return std::make_tuple(major, minor, patch); + } +}; + +constexpr bool operator==(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +struct version_info { + semantic_version semver{}; + unsigned long long build = 0; + constexpr std::tuple, unsigned long long> as_tuple() const noexcept { + return std::make_tuple(semver.as_tuple(), build); + } + template + friend Tostream & operator<<(Tostream & os, version_info const vi) { + if (vi.build > 0) { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch << "+build." << vi.build; + } else { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch; + } + return os; + } +}; + +constexpr bool operator==(version_info const a, version_info const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(version_info const a, version_info const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(version_info const a, version_info const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(version_info const a, version_info const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(version_info const a, version_info const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(version_info const a, version_info const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +constexpr inline version_info Version = {{MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH}, MPT_VERSION_BUILD}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SEMANTIC_VERSION_HPP Property changes on: src/mpt/base/semantic_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/source_location.hpp =================================================================== --- src/mpt/base/source_location.hpp (nonexistent) +++ src/mpt/base/source_location.hpp (working copy) @@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SOURCE_LOCATION_HPP +#define MPT_BASE_SOURCE_LOCATION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#endif // C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::source_location; + +#define MPT_SOURCE_LOCATION_CURRENT() std::source_location::current() + +#else // !C++20 + +#if MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#elif MPT_COMPILER_GCC + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#elif MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#else + +#define MPT_SOURCE_LOCATION_FILE __FILE__ +#define MPT_SOURCE_LOCATION_FUNCTION "" +#define MPT_SOURCE_LOCATION_LINE __LINE__ +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#endif + +// compatible with C++20 std::source_location +struct source_location { +private: + const char * m_file_name; + const char * m_function_name; + uint32 m_line; + uint32 m_column; + +public: + constexpr source_location() noexcept + : m_file_name("") + , m_function_name("") + , m_line(0) + , m_column(0) { + } + constexpr source_location(const char * file, const char * function, uint32 line, uint32 column) noexcept + : m_file_name(file) + , m_function_name(function) + , m_line(line) + , m_column(column) { + } + source_location(const source_location &) = default; + source_location(source_location &&) = default; + static constexpr source_location current(const char * file = MPT_SOURCE_LOCATION_FILE, const char * function = MPT_SOURCE_LOCATION_FUNCTION, uint32 line = MPT_SOURCE_LOCATION_LINE, uint32 column = MPT_SOURCE_LOCATION_COLUMN) noexcept { + return source_location(file, function, line, column); + } + constexpr uint32 line() const noexcept { + return m_line; + } + constexpr uint32 column() const noexcept { + return m_column; + } + constexpr const char * file_name() const noexcept { + return m_file_name; + } + constexpr const char * function_name() const noexcept { + return m_function_name; + } +}; + + +#if (MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6)) || MPT_COMPILER_GCC || (MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0)) +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current() +#else +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current(__FILE__, __func__, __LINE__, 0) +#endif + +#endif // C++20 + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SOURCE_LOCATION_HPP Property changes on: src/mpt/base/source_location.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/span.hpp =================================================================== --- src/mpt/base/span.hpp (nonexistent) +++ src/mpt/base/span.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SPAN_HPP +#define MPT_BASE_SPAN_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#include +#endif // C++20 + +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::dynamic_extent; +using std::span; + +#else // !C++20 + +// Simplified version of gsl::span. +// Non-owning read-only or read-write view into a contiguous block of T +// objects, i.e. equivalent to a (beg,end) or (data,size) tuple. +// Can eventually be replaced without further modifications with a full C++20 +// std::span. + +inline constexpr std::size_t dynamic_extent = std::numeric_limits::max(); + +template +class span { + +public: + using element_type = T; + using value_type = typename std::remove_cv::type; + using index_type = std::size_t; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + + using iterator = pointer; + using const_iterator = const_pointer; + + using difference_type = typename std::iterator_traits::difference_type; + +private: + T * m_beg; + T * m_end; + +public: + span() noexcept + : m_beg(nullptr) + , m_end(nullptr) { + } + + span(pointer beg, pointer end) + : m_beg(beg) + , m_end(end) { + } + + span(pointer data, index_type size) + : m_beg(data) + , m_end(data + size) { + } + + template + span(element_type (&arr)[N]) + : m_beg(arr) + , m_end(arr + N) { + } + + template + span(std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + template + span(const std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + span(const span & other) noexcept = default; + + template + span(const span & other) + : m_beg(other.begin()) + , m_end(other.end()) { + } + + span & operator=(const span & other) noexcept = default; + + iterator begin() const { + return iterator(m_beg); + } + + iterator end() const { + return iterator(m_end); + } + + const_iterator cbegin() const { + return const_iterator(begin()); + } + + const_iterator cend() const { + return const_iterator(end()); + } + + reference operator[](index_type index) { + return m_beg[index]; + } + + const_reference operator[](index_type index) const { + return m_beg[index]; + } + + bool operator==(span const & other) const noexcept { + return size() == other.size() && (m_beg == other.m_beg || std::equal(begin(), end(), other.begin())); + } + + bool operator!=(span const & other) const noexcept { + return !(*this == other); + } + + pointer data() const noexcept { + return m_beg; + } + + bool empty() const noexcept { + return size() == 0; + } + + index_type size() const noexcept { + return static_cast(std::distance(m_beg, m_end)); + } + + index_type length() const noexcept { + return size(); + } + + span subspan(std::size_t offset, std::size_t count = mpt::dynamic_extent) const { + return span(data() + offset, (count == mpt::dynamic_extent) ? (size() - offset) : count); + } + + span first(std::size_t count) const { + return span(data(), count); + } + + span last(std::size_t count) const { + return span(data() + (size() - count), count); + } + +}; // class span + +#endif // C++20 + +template +inline span as_span(T * beg, T * end) { + return span(beg, end); +} + +template +inline span as_span(T * data, std::size_t size) { + return span(data, size); +} + +template +inline span as_span(T (&arr)[N]) { + return span(std::begin(arr), std::end(arr)); +} + +template +inline span as_span(std::array & cont) { + return span(cont); +} + +template +inline span as_span(const std::array & cont) { + return span(cont); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SPAN_HPP Property changes on: src/mpt/base/span.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_arithmetic_shift.hpp =================================================================== --- src/mpt/base/tests/tests_base_arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_arithmetic_shift.hpp (working copy) @@ -0,0 +1,321 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/arithmetic_shift.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace arithmetic_shift { + +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +{ + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), mpt::rshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), mpt::rshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), mpt::rshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), mpt::rshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), mpt::rshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), mpt::rshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), mpt::rshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), mpt::rshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), mpt::rshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), mpt::rshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), mpt::rshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), mpt::rshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), mpt::rshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), mpt::rshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), mpt::rshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), mpt::rshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), mpt::rshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), mpt::rshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), mpt::rshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), mpt::rshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), mpt::rshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), mpt::rshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), mpt::rshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), mpt::rshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), mpt::rshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), mpt::rshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), mpt::rshift_signed_standard(32767, 15)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), mpt::lshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), mpt::lshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), mpt::lshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), mpt::lshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), mpt::lshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), mpt::lshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), mpt::lshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), mpt::lshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), mpt::lshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), mpt::lshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), mpt::lshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), mpt::lshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), mpt::lshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), mpt::lshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), mpt::lshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), mpt::lshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), mpt::lshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), mpt::lshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), mpt::lshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), mpt::lshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), mpt::lshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), mpt::lshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), mpt::lshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), mpt::lshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), mpt::lshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), mpt::lshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), mpt::lshift_signed_standard(32767, 15)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), (-32768) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), (-32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), (-32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), (-2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), (-1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), (0) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), (1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), (2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), (32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), (32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), (-32768) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), (-32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), (-32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), (-2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), (-1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), (0) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), (1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), (2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), (32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), (32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), (-32768) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), (-32767) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), (-32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), (-2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), (-1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), (0) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), (1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), (2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), (32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), (32767) >> 15); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), (-32768) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), (-32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), (-32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), (-2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), (-1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), (0) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), (1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), (2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), (32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), (32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), (-32768) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), (-32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), (-32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), (-2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), (-1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), (0) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), (1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), (2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), (32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), (32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), (-32768) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), (-32767) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), (-32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), (-2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), (-1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), (0) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), (1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), (2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), (32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), (32767) << 15); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_standard(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_standard(0x7fffffff, 31)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_undefined(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_undefined(0x7fffffff, 31)); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(0x7fffffffffffffffll, 63)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 63)); + +#endif +} + +} // namespace arithmetic_shift +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/tests/tests_base_arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_bit.hpp =================================================================== --- src/mpt/base/tests/tests_base_bit.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_bit.hpp (working copy) @@ -0,0 +1,220 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BASE_BIT_HPP +#define MPT_BASE_TESTS_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace bit { + +MPT_TEST_GROUP_INLINE("mpt/base/bit") +{ +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian_probe()); +#endif + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_little()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::little); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::little); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::little); +#endif + } + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_big()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::big); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::big); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::big); +#endif + } + + MPT_TEST_EXPECT_EQUAL(mpt::popcount(static_cast(int32(-1))), 32); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(0u), 0); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(1u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(2u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(3u), 2); + + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(0u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(1u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(2u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(3u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(4u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(5u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(6u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(7u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(8u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(9u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x7fffffffu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000000u)), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000001u)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xfffffffeu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xffffffffu)), false); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(0u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(3u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(5u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(6u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(7u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(9u), 16u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x7fffffffu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000000u)), 0x80000000u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000001u)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xfffffffeu)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xffffffffu)), 0u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(5u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(6u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(7u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(9u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x7fffffffu)), 0x40000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000000u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000001u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xfffffffeu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xffffffffu)), 0x80000000u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(4u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(5u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(6u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(7u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(8u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(9u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x7fffffffu)), 31u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000000u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000001u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xfffffffeu)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xffffffffu)), 32u); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111110)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111100)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11100000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11000000)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b10000000)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000001)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000011)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00011111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00111111)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b01111111)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000001)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000011)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00011111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00111111)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b01111111)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111110)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111100)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11100000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11000000)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b10000000)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xffffffffu), 32); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xfffffffeu), 31); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x80000000u), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7fffffffu), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7ffffffeu), 30); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000007u), 3); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000006u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000005u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000004u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000003u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000002u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000001u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000000u), 0); +} + +} // namespace bit +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BASE_BIT_HPP Property changes on: src/mpt/base/tests/tests_base_bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_math.hpp =================================================================== --- src/mpt/base/tests/tests_base_math.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_math.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_MATH_HPP +#define MPT_BASE_TESTS_MATH_HPP + + + +#include "mpt/base/math.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace math { + +MPT_TEST_GROUP_INLINE("mpt/base/math") +{ + MPT_TEST_EXPECT_EQUAL(mpt::round(1.99), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.5), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.1), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.1), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.5), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.9), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.4), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.7), -2.0); +} + +} // namespace math +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_MATH_HPP Property changes on: src/mpt/base/tests/tests_base_math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_cast.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_cast.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_cast.hpp (working copy) @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_CAST_HPP +#define MPT_BASE_TESTS_SATURATE_CAST_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_cast { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +{ + // trivials + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(-1), -1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(0), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(1), 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + + // signed / unsigned + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int32)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int64)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint64)std::numeric_limits::max()); + + // overflow + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), (uint16)std::numeric_limits::max() + 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), (uint32)std::numeric_limits::max() + 1); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -128); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 32767); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000u); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(static_cast(std::numeric_limits::max())), std::numeric_limits::max()); +} + +} // namespace saturate_cast +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_CAST_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_round.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_round.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_round.hpp (working copy) @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_ROUND_HPP +#define MPT_BASE_TESTS_SATURATE_ROUND_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_round.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_round { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +{ + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() - 0.4), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() + 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() - 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.499), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(110.1), 110); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-110.1), -110); + + // These should fail to compile + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + + // This should trigger assert in Round. + //MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-129), 0); +} + +} // namespace saturate_round +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_ROUND_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_wrapping_divide.hpp =================================================================== --- src/mpt/base/tests/tests_base_wrapping_divide.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_wrapping_divide.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP +#define MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/wrapping_divide.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace wrapping_divide { + +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +{ + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-25, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-23, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-8, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-6, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-5, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-4, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-3, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-2, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-1, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(1, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(2, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(3, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(4, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(5, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(6, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(23, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(25, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(uint32(0x7fffffff), uint32(0x80000000)), uint32(0x7fffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0x7ffffffe), int32(0x7fffffff)), int32(0x7ffffffe)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(2)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(2)), int32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(2)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7fffffff)), int32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffe)), int32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffe)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffd)), int32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffd)), int32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffd)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7fffffff)), int32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7ffffffe)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7ffffffe)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(2)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(2)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(2)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000001), uint32(0xffffffff)), uint32(0xbffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000000), uint32(0xffffffff)), uint32(0xbfffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x3fffffff), uint32(0xffffffff)), uint32(0xc0000000)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000001)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000001)), uint32(2)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000001)), uint32(3)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7fffffff)), uint32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffe)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffd)), uint32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffd)), uint32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffd)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7fffffff)), uint32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7ffffffe)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-15, 7), -3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-14, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-13, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-12, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-11, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-10, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-9, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-8, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-7, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-6, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-5, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-4, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-3, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-2, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-1, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(1, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(2, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(3, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(4, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(5, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(6, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(7, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(9, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(10, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(11, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(12, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(13, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(14, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(15, 7), 2); +} + +} // namespace wrapping_divide +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/tests/tests_base_wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/utility.hpp =================================================================== --- src/mpt/base/utility.hpp (nonexistent) +++ src/mpt/base/utility.hpp (working copy) @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_UTILITY_HPP +#define MPT_BASE_UTILITY_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_BEFORE(20) +#include "mpt/base/saturate_cast.hpp" +#endif + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::in_range; + +#else + +// Returns true iff Tdst can represent the value val. +// Use as if(mpt::in_range(-1)). +template +constexpr bool in_range(Tsrc val) { + return (static_cast(mpt::saturate_cast(val)) == val); +} + +#endif + + +#if MPT_CXX_AT_LEAST(23) + +using std::to_underlying; + +#else + +template +constexpr std::underlying_type_t to_underlying(T value) noexcept { + return static_cast::type>(value); +} + +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_UTILITY_HPP Property changes on: src/mpt/base/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/version.hpp =================================================================== --- src/mpt/base/version.hpp (nonexistent) +++ src/mpt/base/version.hpp (working copy) @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_VERSION_HPP +#define MPT_BASE_VERSION_HPP + + + +#define MPT_VERSION_MAJOR 0 +#define MPT_VERSION_MINOR 0 +#define MPT_VERSION_PATCH 0 +#define MPT_VERSION_BUILD 0 + + + +#endif // MPT_BASE_VERSION_HPP Property changes on: src/mpt/base/version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/wrapping_divide.hpp =================================================================== --- src/mpt/base/wrapping_divide.hpp (nonexistent) +++ src/mpt/base/wrapping_divide.hpp (working copy) @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_WRAPPING_DIVIDE_HPP +#define MPT_BASE_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Modulo with more intuitive behaviour for some contexts: +// Instead of being symmetrical around 0, the pattern for positive numbers is repeated in the negative range. +// For example, wrapping_modulo(-1, m) == (m - 1). +// Behaviour is undefined if m<=0. +template +constexpr auto wrapping_modulo(T x, M m) -> decltype(x % m) { + return (x >= 0) ? (x % m) : (m - 1 - ((-1 - x) % m)); +} + +template +constexpr auto wrapping_divide(T x, D d) -> decltype(x / d) { + return (x >= 0) ? (x / d) : (((x + 1) / d) - 1); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64.hpp =================================================================== --- src/mpt/binary/base64.hpp (nonexistent) +++ src/mpt/binary/base64.hpp (working copy) @@ -0,0 +1,136 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64_HPP +#define MPT_BINARY_BASE64_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64_parse_error : public std::runtime_error { +public: + base64_parse_error() + : std::runtime_error("invalid Base64 encoding") { + } +}; + + +inline constexpr std::array base64 = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('+'), MPT_UCHAR('/')}}; + + +template +inline mpt::ustring encode_base64(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + result.push_back(base64[(bits >> 6) & 0x3f]); + result.push_back(base64[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + if (padding > 1) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 6) & 0x3f]); + } + if (padding > 0) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) { + if (base64[i] == c) { + return i; + } + } + throw base64_parse_error(); +} + + +inline std::vector decode_base64(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * (src.length() / 4)); + uint32 bits = 0; + std::size_t chars = 0; + std::size_t padding = 0; + for (mpt::uchar c : src) { + bits <<= 6; + if (c == MPT_UCHAR('=')) { + padding++; + } else { + bits |= decode_base64_bits(c); + } + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + if (chars != 0) { + throw base64_parse_error(); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64_HPP Property changes on: src/mpt/binary/base64.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64url.hpp =================================================================== --- src/mpt/binary/base64url.hpp (nonexistent) +++ src/mpt/binary/base64url.hpp (working copy) @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64URL_HPP +#define MPT_BINARY_BASE64URL_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64url_parse_error : public std::runtime_error { +public: + base64url_parse_error() + : std::runtime_error("invalid Base64URL encoding") { + } +}; + + +inline constexpr std::array base64url = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('-'), MPT_UCHAR('_')}}; + +template +inline mpt::ustring encode_base64url(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + result.push_back(base64url[(bits >> 6) & 0x3f]); + result.push_back(base64url[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + if (padding <= 1) { + result.push_back(base64url[(bits >> 6) & 0x3f]); + } + if (padding <= 0) { + result.push_back(base64url[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64url_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) + { + if (base64url[i] == c) + { + return i; + } + } + throw base64url_parse_error(); +} + +inline std::vector decode_base64url(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * ((src.length() + 2) / 4)); + uint32 bits = 0; + std::size_t chars = 0; + for (mpt::uchar c : src) { + bits <<= 6; + bits |= decode_base64url_bits(c); + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + bits = 0; + chars = 0; + } + } + uint32 padding = 0; + if (chars != 0 && chars < 2) { + throw base64url_parse_error(); + } + while (chars != 0) { + bits <<= 6; + padding++; + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64URL_HPP Property changes on: src/mpt/binary/base64url.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/hex.hpp =================================================================== --- src/mpt/binary/hex.hpp (nonexistent) +++ src/mpt/binary/hex.hpp (working copy) @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_HEX_HPP +#define MPT_BINARY_HEX_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline constexpr std::array encode_nibble = { + {MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), + MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), + MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('A'), MPT_UCHAR('B'), + MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F')}}; + + +inline bool decode_byte(uint8 & byte, mpt::uchar c1, mpt::uchar c2) { + byte = 0; + if (MPT_UCHAR('0') <= c1 && c1 <= MPT_UCHAR('9')) { + byte += static_cast((c1 - MPT_UCHAR('0')) << 4); + } else if (MPT_UCHAR('A') <= c1 && c1 <= MPT_UCHAR('F')) { + byte += static_cast((c1 - MPT_UCHAR('A') + 10) << 4); + } else if (MPT_UCHAR('a') <= c1 && c1 <= MPT_UCHAR('f')) { + byte += static_cast((c1 - MPT_UCHAR('a') + 10) << 4); + } else { + return false; + } + if (MPT_UCHAR('0') <= c2 && c2 <= MPT_UCHAR('9')) { + byte += static_cast(c2 - MPT_UCHAR('0')); + } else if (MPT_UCHAR('A') <= c2 && c2 <= MPT_UCHAR('F')) { + byte += static_cast(c2 - MPT_UCHAR('A') + 10); + } else if (MPT_UCHAR('a') <= c2 && c2 <= MPT_UCHAR('f')) { + byte += static_cast(c2 - MPT_UCHAR('a') + 10); + } else { + return false; + } + return true; +} + + +template +inline mpt::ustring encode_hex(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(src.size() * 2); + for (std::byte byte : src) { + result.push_back(encode_nibble[(mpt::byte_cast(byte) & 0xf0) >> 4]); + result.push_back(encode_nibble[mpt::byte_cast(byte) & 0x0f]); + } + return result; +} + +inline std::vector decode_hex(const mpt::ustring & src) { + std::vector result; + result.reserve(src.size() / 2); + for (std::size_t i = 0; (i + 1) < src.size(); i += 2) { + uint8 byte = 0; + if (!decode_byte(byte, src[i], src[i + 1])) { + return result; + } + result.push_back(mpt::byte_cast(byte)); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_HEX_HPP Property changes on: src/mpt/binary/hex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/tests/tests_binary.hpp =================================================================== --- src/mpt/binary/tests/tests_binary.hpp (nonexistent) +++ src/mpt/binary/tests/tests_binary.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BINARY_HPP +#define MPT_BASE_TESTS_BINARY_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace binary { + +MPT_TEST_GROUP_INLINE("mpt/binary") +{ + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4=")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg==")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("bGVhc3VyZS4="))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("ZWFzdXJlLg=="))); + } + + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("bGVhc3VyZS4"))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("ZWFzdXJlLg"))); + } +} + +} // namespace binary +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BINARY_HPP Property changes on: src/mpt/binary/tests/tests_binary.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/libc.hpp =================================================================== --- src/mpt/check/libc.hpp (nonexistent) +++ src/mpt/check/libc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_LIBC_HPP +#define MPT_CHECK_LIBC_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#ifndef __STDC_CONSTANT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_CONSTANT_MACROS +MPT_WARNING("C stdlib does not provide constant macros. Please #define __STDC_CONSTANT_MACROS.") +#endif +#endif + +#ifndef __STDC_FORMAT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_FORMAT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_FORMAT_MACROS.") +#endif +#endif + +#ifndef __STDC_LIMIT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_LIMIT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_LIMIT_MACROS.") +#endif +#endif + +#ifndef _USE_MATH_DEFINES +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_USE_MATH_DEFINES +MPT_WARNING("C stdlib does not provide math constants. Please #define _USE_MATH_DEFINES.") +#endif +#endif + +#if !MPT_LIBC_MS +#if !defined(_FILE_OFFSET_BITS) +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_FILE_OFFSET_BITS +MPT_WARNING("C stdlib may not provide 64bit std::FILE access. Please #define _FILE_OFFSET_BITS=64.") +#endif +#endif +#endif + +#endif // MPT_CHECK_LIBC_HPP Property changes on: src/mpt/check/libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/mfc.hpp =================================================================== --- src/mpt/check/mfc.hpp (nonexistent) +++ src/mpt/check/mfc.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_MFC_HPP +#define MPT_CHECK_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" +#include "mpt/detect/mfc.hpp" + +#if MPT_DETECTED_MFC + +#ifndef _CSTRING_DISABLE_NARROW_WIDE_CONVERSION +#ifndef MPT_CHECK_MFC_IGNORE_WARNING_NO_CSTRING_DISABLE_NARROW_WIDE_CONVERSION +MPT_WARNING("MFC uses CString with automatic encoding conversions. Please #define _CSTRING_DISABLE_NARROW_WIDE_CONVERSION.") +#endif +#endif + +#endif // MPT_DETECTED_MFC + +#endif // MPT_CHECK_MFC_HPP Property changes on: src/mpt/check/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/windows.hpp =================================================================== --- src/mpt/check/windows.hpp (nonexistent) +++ src/mpt/check/windows.hpp (working copy) @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_WINDOWS_HPP +#define MPT_CHECK_WINDOWS_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#if MPT_OS_WINDOWS + +#ifndef UNICODE +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_UNICODE +MPT_WARNING("windows.h uses MBCS TCHAR. Please #define UNICODE.") +#endif +#endif + +#ifndef NOMINMAX +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_NOMINMAX +MPT_WARNING("windows.h defines min and max which conflicts with C++. Please #define NOMINMAX.") +#endif +#endif + +#endif // MPT_OS_WINDOWS + +#endif // MPT_CHECK_WINDOWS_HPP Property changes on: src/mpt/check/windows.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/crc.hpp =================================================================== --- src/mpt/crc/crc.hpp (nonexistent) +++ src/mpt/crc/crc.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRC_CRC_HPP +#define MPT_CRC_CRC_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class crc { + +public: + using self_type = crc; + using value_type = T; + using byte_type = uint8; + + static constexpr std::size_t size_bytes = sizeof(value_type); + static constexpr std::size_t size_bits = sizeof(value_type) * 8; + static constexpr value_type top_bit = static_cast(1) << ((sizeof(value_type) * 8) - 1); + +private: + template + static constexpr Tint reverse(Tint value) noexcept { + const std::size_t bits = sizeof(Tint) * 8; + Tint result = 0; + for (std::size_t i = 0; i < bits; ++i) { + result <<= 1; + result |= static_cast(value & 0x1); + value >>= 1; + } + return result; + } + + static constexpr value_type calculate_table_entry(byte_type pos) noexcept { + value_type value = 0; + value = (static_cast(reverseData ? reverse(pos) : pos) << (size_bits - 8)); + for (std::size_t bit = 0; bit < 8; ++bit) { + if (value & top_bit) { + value = (value << 1) ^ polynomial; + } else { + value = (value << 1); + } + } + value = (reverseData ? reverse(value) : value); + return value; + } + +private: + static constexpr std::array calculate_table() noexcept { + std::array t = mpt::init_array(value_type{}); + for (std::size_t i = 0; i < 256; ++i) { + t[i] = calculate_table_entry(static_cast(i)); + } + return t; + } + + static constexpr std::array table = calculate_table(); + +private: + constexpr value_type read_table(byte_type pos) const noexcept { + return table[pos]; + } + +private: + value_type value; + +public: + constexpr crc() noexcept + : value(initial) { + return; + } + + constexpr void processByte(byte_type byte) noexcept { + if constexpr (reverseData) { + value = (value >> 8) ^ read_table(static_cast((value & 0xff) ^ byte)); + } else { + value = (value << 8) ^ read_table(static_cast(((value >> (size_bits - 8)) & 0xff) ^ byte)); + } + } + + constexpr value_type result() const noexcept { + return (value ^ resultXOR); + } + +public: + constexpr operator value_type() const noexcept { + return result(); + } + + inline crc & process(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & process(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + inline crc & process(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + return *this; + } + + template + inline crc & process(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + inline crc & operator()(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & operator()(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + crc & operator()(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + operator()(*it); + } + return *this; + } + + template + inline crc & operator()(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + template + crc(InputIt beg, InputIt end) + : value(initial) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + } + + template + inline crc(const Container & data) + : value(initial) { + process(data.begin(), data.end()); + } +}; + +using crc16 = crc; +using crc32 = crc; +using crc32_ogg = crc; +using crc32c = crc; +using crc64_jones = crc; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRC_CRC_HPP Property changes on: src/mpt/crc/crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/tests/tests_crc.hpp =================================================================== --- src/mpt/crc/tests/tests_crc.hpp (nonexistent) +++ src/mpt/crc/tests/tests_crc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRC_HPP +#define MPT_BASE_TESTS_CRC_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crc { + +MPT_TEST_GROUP_INLINE("mpt/crc") +{ + MPT_TEST_EXPECT_EQUAL(mpt::crc32(std::string("123456789")), 0xCBF43926u); + MPT_TEST_EXPECT_EQUAL(mpt::crc32_ogg(std::string("123456789")), 0x89a1897fu); +} + +} // namespace crc +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRC_HPP Property changes on: src/mpt/crc/tests/tests_crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/exception.hpp =================================================================== --- src/mpt/crypto/exception.hpp (nonexistent) +++ src/mpt/crypto/exception.hpp (working copy) @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_EXCEPTION_HPP +#define MPT_CRYPTO_EXCEPTION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + +class exception + : public std::runtime_error { +private: + NTSTATUS m_Status; + +public: + exception(NTSTATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + NTSTATUS code() const noexcept { + return m_Status; + } +}; + + +class security_exception + : public std::runtime_error { +private: + SECURITY_STATUS m_Status; + +public: + security_exception(SECURITY_STATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + SECURITY_STATUS code() const noexcept { + return m_Status; + } +}; + + +inline void CheckNTSTATUS(NTSTATUS status) { + if (status >= 0) { + return; + } else if (status == STATUS_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw exception(status); + } +} + + +inline void CheckSECURITY_STATUS(SECURITY_STATUS status) { + if (status == ERROR_SUCCESS) { + return; + } else if (status == NTE_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw security_exception(status); + } +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_EXCEPTION_HPP Property changes on: src/mpt/crypto/exception.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/hash.hpp =================================================================== --- src/mpt/crypto/hash.hpp (nonexistent) +++ src/mpt/crypto/hash.hpp (working copy) @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_HASH_HPP +#define MPT_CRYPTO_HASH_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/crypto/exception.hpp" + +#include +#include + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + + +namespace hash { + + +struct hash_traits_md5 { + static constexpr std::size_t output_bits = 128; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_MD5_ALGORITHM; +}; + +struct hash_traits_sha1 { + static constexpr std::size_t output_bits = 160; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA1_ALGORITHM; +}; + +struct hash_traits_sha256 { + static constexpr std::size_t output_bits = 256; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA256_ALGORITHM; +}; + +struct hash_traits_sha512 { + static constexpr std::size_t output_bits = 512; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA512_ALGORITHM; +}; + +template +class hash_impl { + +public: + using traits = Traits; + + using result_type = std::array; + +private: + BCRYPT_ALG_HANDLE hAlg = NULL; + std::vector hashState; + std::vector hashResult; + BCRYPT_HASH_HANDLE hHash = NULL; + +private: + void init() { + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hAlg, traits::bcrypt_name, NULL, 0)); + if (!hAlg) { + throw exception(0); + } + DWORD hashStateSize = 0; + DWORD hashStateSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&hashStateSize, sizeof(DWORD), &hashStateSizeSize, 0)); + if (hashStateSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashStateSize <= 0) { + throw exception(0); + } + hashState.resize(hashStateSize); + DWORD hashResultSize = 0; + DWORD hashResultSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&hashResultSize, sizeof(DWORD), &hashResultSizeSize, 0)); + if (hashResultSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashResultSize <= 0) { + throw exception(0); + } + if (hashResultSize != mpt::extent()) { + throw exception(0); + } + hashResult.resize(hashResultSize); + CheckNTSTATUS(BCryptCreateHash(hAlg, &hHash, hashState.data(), hashStateSize, NULL, 0, 0)); + if (!hHash) { + throw exception(0); + } + } + + void cleanup() { + if (hHash) { + BCryptDestroyHash(hHash); + hHash = NULL; + } + hashResult.resize(0); + hashResult.shrink_to_fit(); + hashState.resize(0); + hashState.shrink_to_fit(); + if (hAlg) { + BCryptCloseAlgorithmProvider(hAlg, 0); + hAlg = NULL; + } + } + +public: + hash_impl() { + try { + init(); + } catch (...) { + cleanup(); + throw; + } + } + hash_impl(const hash_impl &) = delete; + hash_impl & operator=(const hash_impl &) = delete; + ~hash_impl() { + cleanup(); + } + +public: + hash_impl & process(mpt::const_byte_span data) { + CheckNTSTATUS(BCryptHashData(hHash, const_cast(mpt::byte_cast(data.data())), mpt::saturate_cast(data.size()), 0)); + return *this; + } + + result_type result() { + result_type res = mpt::init_array(std::byte{0}); + CheckNTSTATUS(BCryptFinishHash(hHash, hashResult.data(), mpt::saturate_cast(hashResult.size()), 0)); + assert(hashResult.size() == mpt::extent()); + std::transform(hashResult.begin(), hashResult.end(), res.begin(), [](BYTE b) { return mpt::as_byte(b); }); + return res; + } +}; + +using MD5 = hash_impl; +using SHA1 = hash_impl; +using SHA256 = hash_impl; +using SHA512 = hash_impl; + + +} // namespace hash + + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_HASH_HPP Property changes on: src/mpt/crypto/hash.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/jwk.hpp =================================================================== --- src/mpt/crypto/jwk.hpp (nonexistent) +++ src/mpt/crypto/jwk.hpp (working copy) @@ -0,0 +1,532 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_JWK_HPP +#define MPT_CRYPTO_JWK_HPP + + + +#include "mpt/base/alloc.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/json/json.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace crypto { + + + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +class keystore { +public: + enum class domain + { + system = 1, + user = 2, + }; + +private: + NCRYPT_PROV_HANDLE hProv = NULL; + domain ProvDomain = domain::user; + +private: + void cleanup() { + if (hProv) { + NCryptFreeObject(hProv); + hProv = NULL; + } + } + +public: + keystore(domain d) + : ProvDomain(d) { + try { + CheckSECURITY_STATUS(NCryptOpenStorageProvider(&hProv, MS_KEY_STORAGE_PROVIDER, 0)); + } catch (...) { + cleanup(); + throw; + } + } + ~keystore() { + return; + } + operator NCRYPT_PROV_HANDLE() { + return hProv; + } + keystore::domain store_domain() const { + return ProvDomain; + } +}; + + + +namespace asymmetric { + + + +class signature_verification_failed + : public std::runtime_error { +public: + signature_verification_failed() + : std::runtime_error("Signature Verification failed.") { + return; + } +}; + + + +inline std::vector jws_get_keynames(const mpt::ustring & jws_) { + std::vector result; + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + for (const auto & s : jws["signatures"]) { + result.push_back(s["header"]["kid"]); + } + return result; +} + + + +struct RSASSA_PSS_SHA512_traits { + using hash_type = mpt::crypto::hash::SHA512; + static constexpr const char * jwk_alg = "PS512"; +}; + + + +template +class rsassa_pss { + +public: + using hash_type = typename Traits::hash_type; + static constexpr const char * jwk_alg = Traits::jwk_alg; + + struct public_key_data { + + mpt::ustring name; + uint32 length = 0; + std::vector public_exp; + std::vector modulus; + + std::vector as_cng_blob() const { + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + rsakey_blob.Magic = BCRYPT_RSAPUBLIC_MAGIC; + rsakey_blob.BitLength = length; + rsakey_blob.cbPublicExp = mpt::saturate_cast(public_exp.size()); + rsakey_blob.cbModulus = mpt::saturate_cast(modulus.size()); + std::vector result(sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size() + modulus.size()); + std::memcpy(result.data(), &rsakey_blob, sizeof(BCRYPT_RSAKEY_BLOB)); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB), public_exp.data(), public_exp.size()); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size(), modulus.data(), modulus.size()); + return result; + } + + mpt::ustring as_jwk() const { + nlohmann::json json = nlohmann::json::object(); + json["kid"] = name; + json["kty"] = "RSA"; + json["alg"] = jwk_alg; + json["use"] = "sig"; + json["e"] = mpt::encode_base64url(mpt::as_span(public_exp)); + json["n"] = mpt::encode_base64url(mpt::as_span(modulus)); + return mpt::convert(mpt::common_encoding::utf8, json.dump()); + } + + static public_key_data from_jwk(const mpt::ustring & jwk) { + public_key_data result; + try { + nlohmann::json json = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk)); + if (json["kty"] != "RSA") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["alg"] != jwk_alg) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["use"] != "sig") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + result.name = json["kid"].get(); + result.public_exp = mpt::decode_base64url(json["e"]); + result.modulus = mpt::decode_base64url(json["n"]); + result.length = mpt::saturate_cast(result.modulus.size() * 8); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (...) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + return result; + } + + static public_key_data from_cng_blob(const mpt::ustring & name, const std::vector & blob) { + public_key_data result; + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + if (blob.size() < sizeof(BCRYPT_RSAKEY_BLOB)) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + std::memcpy(&rsakey_blob, blob.data(), sizeof(BCRYPT_RSAKEY_BLOB)); + if (rsakey_blob.Magic != BCRYPT_RSAPUBLIC_MAGIC) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + if (blob.size() != sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + result.name = name; + result.length = rsakey_blob.BitLength; + result.public_exp = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB), blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp); + result.modulus = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp, blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus); + return result; + } + }; + + + + static std::vector parse_jwk_set(const mpt::ustring & jwk_set_) { + std::vector result; + nlohmann::json jwk_set = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk_set_)); + for (const auto & k : jwk_set["keys"]) { + try { + result.push_back(public_key_data::from_jwk(mpt::convert(mpt::common_encoding::utf8, k.dump()))); + } catch (...) { + // nothing + } + } + return result; + } + + + + class public_key { + + private: + mpt::ustring name; + BCRYPT_ALG_HANDLE hSignAlg = NULL; + BCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + BCryptDestroyKey(hKey); + hKey = NULL; + } + if (hSignAlg) { + BCryptCloseAlgorithmProvider(hSignAlg, 0); + hSignAlg = NULL; + } + } + + public: + public_key(const public_key_data & data) { + try { + name = data.name; + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0)); + std::vector blob = data.as_cng_blob(); + CheckNTSTATUS(BCryptImportKeyPair(hSignAlg, NULL, BCRYPT_RSAPUBLIC_BLOB, &hKey, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), 0)); + } catch (...) { + cleanup(); + throw; + } + } + + public_key(const public_key & other) + : public_key(other.get_public_key_data()) { + return; + } + + public_key & operator=(const public_key & other) { + if (&other == this) { + return *this; + } + public_key copy(other); + { + using std::swap; + swap(copy.name, name); + swap(copy.hSignAlg, hSignAlg); + swap(copy.hKey, hKey); + } + return *this; + } + + ~public_key() { + cleanup(); + } + + mpt::ustring get_name() const { + return name; + } + + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + void verify_hash(typename hash_type::result_type hash, std::vector signature) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + NTSTATUS result = BCryptVerifySignature(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(signature.data()), mpt::saturate_cast(signature.size()), BCRYPT_PAD_PSS); + if (result == 0x00000000 /*STATUS_SUCCESS*/) { + return; + } + if (result == 0xC000A000 /*STATUS_INVALID_SIGNATURE*/) { + throw signature_verification_failed(); + } + CheckNTSTATUS(result); + throw signature_verification_failed(); + } + + void verify(mpt::const_byte_span payload, const std::vector & signature) { + verify_hash(hash_type().process(payload).result(), signature); + } + + std::vector jws_verify(const mpt::ustring & jws_) { + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + std::vector payload = mpt::decode_base64url(jws["payload"]); + nlohmann::json jsignature = nlohmann::json::object(); + bool sigfound = false; + for (const auto & s : jws["signatures"]) { + if (s["header"]["kid"] == mpt::convert(mpt::common_encoding::utf8, name)) { + jsignature = s; + sigfound = true; + } + } + if (!sigfound) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(jsignature["protected"]); + std::vector signature = mpt::decode_base64url(jsignature["signature"]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + + std::vector jws_compact_verify(const mpt::ustring & jws) { + std::vector parts = mpt::split(jws, MPT_USTRING(".")); + if (parts.size() != 3) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(parts[0]); + std::vector payload = mpt::decode_base64url(parts[1]); + std::vector signature = mpt::decode_base64url(parts[2]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + }; + + + + static inline void jws_verify_at_least_one(std::vector & keys, const std::vector & expectedPayload, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + bool sigchecked = false; + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + if (expectedPayload != key.jws_verify(signature)) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + sigchecked = true; + } + } + } + if (!sigchecked) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + } + + + + static inline std::vector jws_verify_at_least_one(std::vector & keys, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + return key.jws_verify(signature); + } + } + } + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + + + + class managed_private_key { + + private: + mpt::ustring name; + NCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + NCryptFreeObject(hKey); + hKey = NULL; + } + } + + public: + managed_private_key() = delete; + + managed_private_key(const managed_private_key &) = delete; + + managed_private_key & operator=(const managed_private_key &) = delete; + + managed_private_key(keystore & keystore) { + try { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, NULL, 0, 0)); + } catch (...) { + cleanup(); + throw; + } + } + + managed_private_key(keystore & keystore, const mpt::ustring & name_) + : name(name_) { + try { + SECURITY_STATUS openKeyStatus = NCryptOpenKey(keystore, &hKey, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0)); + if (openKeyStatus == NTE_BAD_KEYSET) { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0))); + DWORD length = mpt::saturate_cast(keysize); + CheckSECURITY_STATUS(NCryptSetProperty(hKey, NCRYPT_LENGTH_PROPERTY, (PBYTE)&length, mpt::saturate_cast(sizeof(DWORD)), 0)); + CheckSECURITY_STATUS(NCryptFinalizeKey(hKey, 0)); + } else { + CheckSECURITY_STATUS(openKeyStatus); + } + } catch (...) { + cleanup(); + throw; + } + } + + ~managed_private_key() { + cleanup(); + } + + void destroy() { + CheckSECURITY_STATUS(NCryptDeleteKey(hKey, 0)); + name = mpt::ustring(); + hKey = NULL; + } + + public: + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + std::vector sign_hash(typename hash_type::result_type hash) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), NULL, 0, &bytes, BCRYPT_PAD_PSS)); + std::vector result(bytes); + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(result.data()), mpt::saturate_cast(result.size()), &bytes, BCRYPT_PAD_PSS)); + return result; + } + + std::vector sign(mpt::const_byte_span payload) { + return sign_hash(hash_type().process(payload).result()); + } + + mpt::ustring jws_compact_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + return mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(signature)); + } + + mpt::ustring jws_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + nlohmann::json header = nlohmann::json::object(); + header["kid"] = name; + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + nlohmann::json jws = nlohmann::json::object(); + jws["payload"] = mpt::encode_base64url(payload); + jws["signatures"] = nlohmann::json::array(); + nlohmann::json jsignature = nlohmann::json::object(); + jsignature["header"] = header; + jsignature["protected"] = mpt::encode_base64url(mpt::as_span(protectedheaderstring)); + jsignature["signature"] = mpt::encode_base64url(mpt::as_span(signature)); + jws["signatures"].push_back(jsignature); + return mpt::convert(mpt::common_encoding::utf8, jws.dump()); + } + }; + +}; // class rsassa_pss + + + +} // namespace asymmetric + + + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +} // namespace crypto + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_JWK_HPP Property changes on: src/mpt/crypto/jwk.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/tests/tests_crypto.hpp =================================================================== --- src/mpt/crypto/tests/tests_crypto.hpp (nonexistent) +++ src/mpt/crypto/tests/tests_crypto.hpp (working copy) @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRYPTO_HPP +#define MPT_BASE_TESTS_CRYPTO_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crypto { + +MPT_TEST_GROUP_INLINE("mpt/crypto") +{ +#if MPT_OS_WINDOWS + mpt::crypto::hash::SHA512::result_type sha512_abc{ + std::byte{0xdd}, std::byte{0xaf}, std::byte{0x35}, std::byte{0xa1}, std::byte{0x93}, std::byte{0x61}, std::byte{0x7a}, std::byte{0xba}, + std::byte{0xcc}, std::byte{0x41}, std::byte{0x73}, std::byte{0x49}, std::byte{0xae}, std::byte{0x20}, std::byte{0x41}, std::byte{0x31}, + std::byte{0x12}, std::byte{0xe6}, std::byte{0xfa}, std::byte{0x4e}, std::byte{0x89}, std::byte{0xa9}, std::byte{0x7e}, std::byte{0xa2}, + std::byte{0x0a}, std::byte{0x9e}, std::byte{0xee}, std::byte{0xe6}, std::byte{0x4b}, std::byte{0x55}, std::byte{0xd3}, std::byte{0x9a}, + std::byte{0x21}, std::byte{0x92}, std::byte{0x99}, std::byte{0x2a}, std::byte{0x27}, std::byte{0x4f}, std::byte{0xc1}, std::byte{0xa8}, + std::byte{0x36}, std::byte{0xba}, std::byte{0x3c}, std::byte{0x23}, std::byte{0xa3}, std::byte{0xfe}, std::byte{0xeb}, std::byte{0xbd}, + std::byte{0x45}, std::byte{0x4d}, std::byte{0x44}, std::byte{0x23}, std::byte{0x64}, std::byte{0x3c}, std::byte{0xe8}, std::byte{0x0e}, + std::byte{0x2a}, std::byte{0x9a}, std::byte{0xc9}, std::byte{0x4f}, std::byte{0xa5}, std::byte{0x4c}, std::byte{0xa4}, std::byte{0x9f}}; + MPT_TEST_EXPECT_EQUAL(mpt::crypto::hash::SHA512().process(mpt::byte_cast(mpt::as_span(std::string("abc")))).result(), sha512_abc); + +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + { + + std::vector data = {std::byte{0x11}, std::byte{0x12}, std::byte{0x13}, std::byte{0x14}}; + + mpt::crypto::keystore keystore(mpt::crypto::keystore::domain::user); + + mpt::crypto::asymmetric::rsassa_pss<>::managed_private_key key(keystore, U_("OpenMPT Test Key 1")); + + auto publickeydata = key.get_public_key_data(); + + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk{publickeydata}; + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk_copy{pk}; + mpt::ustring jwk = publickeydata.as_jwk(); + + std::vector signature = key.sign(mpt::as_span(data)); + mpt::ustring jws = key.jws_sign(mpt::as_span(data)); + mpt::ustring jws_compact = key.jws_compact_sign(mpt::as_span(data)); + + try { + pk.verify(mpt::as_span(data), signature); + auto verifieddata1 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_verify(jws); + auto verifieddata2 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_compact_verify(jws_compact); + MPT_TEST_EXPECT_EQUAL(true, true); + MPT_TEST_EXPECT_EQUAL(data, verifieddata1); + MPT_TEST_EXPECT_EQUAL(data, verifieddata2); + } catch (const mpt::crypto::asymmetric::signature_verification_failed &) { + MPT_TEST_EXPECT_EQUAL(true, false); + } + + key.destroy(); + } + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON +} + + +} // namespace crypto +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRYPTO_HPP Property changes on: src/mpt/crypto/tests/tests_crypto.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/mfc.hpp =================================================================== --- src/mpt/detect/mfc.hpp (nonexistent) +++ src/mpt/detect/mfc.hpp (working copy) @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_MFC_HPP +#define MPT_DETECT_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" + +#if defined(MPT_WITH_MFC) +#if !__has_include() +#error "MPT_WITH_MFC defined but not found." +#endif +#if !MPT_COMPILER_GENERIC && !MPT_COMPILER_MSVC && !MPT_COMPILER_CLANG +MPT_WARNING("Using MFC with unsupported compiler.") +#endif +#define MPT_DETECTED_MFC 1 +#else +#define MPT_DETECTED_MFC 0 +#endif + +#endif // MPT_DETECT_MFC_HPP Property changes on: src/mpt/detect/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/nlohmann_json.hpp =================================================================== --- src/mpt/detect/nlohmann_json.hpp (nonexistent) +++ src/mpt/detect/nlohmann_json.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_NLOHMANN_JSON_HPP +#define MPT_DETECT_NLOHMANN_JSON_HPP + +#if defined(MPT_WITH_NLOHMANN_JSON) +#if !__has_include() +#error "MPT_WITH_NLOHMANN_JSON defined but not found." +#endif +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#if __has_include() +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#define MPT_DETECTED_NLOHMANN_JSON 0 +#endif +#endif + +#endif // MPT_DETECT_NLOHMANN_JSON_HPP Property changes on: src/mpt/detect/nlohmann_json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/floatingpoint.hpp =================================================================== --- src/mpt/endian/floatingpoint.hpp (nonexistent) +++ src/mpt/endian/floatingpoint.hpp (working copy) @@ -0,0 +1,441 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/floatingpoint.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// 1.0f --> 0x3f800000u +MPT_FORCEINLINE uint32 EncodeIEEE754binary32(float32 f) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + float m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0f) { + uint32 expo = 0u; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = 0u; + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } else { + uint32 expo = e + 127 - 1; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = static_cast(std::fabs(std::ldexp(m, 24))); + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } + } +} + +MPT_FORCEINLINE uint64 EncodeIEEE754binary64(float64 f) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + double m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0) { + uint64 expo = 0u; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = 0u; + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } else { + uint64 expo = static_cast(e) + 1023 - 1; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = static_cast(std::fabs(std::ldexp(m, 53))); + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } + } +} + +// 0x3f800000u --> 1.0f +MPT_FORCEINLINE float32 DecodeIEEE754binary32(uint32 i) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(i); + } else { + uint32 mant = (i & 0x007fffffu) >> 0; + uint32 expo = (i & 0x7f800000u) >> 23; + uint32 sign = (i & 0x80000000u) >> 31; + if (expo == 0) { + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x00800000u; + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } + } +} + +MPT_FORCEINLINE float64 DecodeIEEE754binary64(uint64 i) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(i); + } else { + uint64 mant = (i & 0x000fffffffffffffull) >> 0; + uint64 expo = (i & 0x7ff0000000000000ull) >> 52; + uint64 sign = (i & 0x8000000000000000ull) >> 63; + if (expo == 0) { + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x0010000000000000ull; + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } + } +} + + +// template parameters are byte indices corresponding to the individual bytes of iee754 in memory +template +struct IEEE754binary32Emulated { +public: + using self_t = IEEE754binary32Emulated; + std::byte bytes[4]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary32Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary32Emulated(float32 f) { + SetInt32(EncodeIEEE754binary32(f)); + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + } + MPT_FORCEINLINE operator float32() const { + return DecodeIEEE754binary32(GetInt32()); + } + MPT_FORCEINLINE self_t & SetInt32(uint32 i) { + bytes[hihi] = static_cast(i >> 24); + bytes[hilo] = static_cast(i >> 16); + bytes[lohi] = static_cast(i >> 8); + bytes[lolo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return 0u + | (static_cast(bytes[hihi]) << 24) + | (static_cast(bytes[hilo]) << 16) + | (static_cast(bytes[lohi]) << 8) + | (static_cast(bytes[lolo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; +template +struct IEEE754binary64Emulated { +public: + using self_t = IEEE754binary64Emulated; + std::byte bytes[8]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary64Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary64Emulated(float64 f) { + SetInt64(EncodeIEEE754binary64(f)); + } + MPT_FORCEINLINE explicit IEEE754binary64Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + bytes[4] = b4; + bytes[5] = b5; + bytes[6] = b6; + bytes[7] = b7; + } + MPT_FORCEINLINE operator float64() const { + return DecodeIEEE754binary64(GetInt64()); + } + MPT_FORCEINLINE self_t & SetInt64(uint64 i) { + bytes[hihihi] = static_cast(i >> 56); + bytes[hihilo] = static_cast(i >> 48); + bytes[hilohi] = static_cast(i >> 40); + bytes[hilolo] = static_cast(i >> 32); + bytes[lohihi] = static_cast(i >> 24); + bytes[lohilo] = static_cast(i >> 16); + bytes[lolohi] = static_cast(i >> 8); + bytes[lololo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return 0u + | (static_cast(bytes[hihihi]) << 56) + | (static_cast(bytes[hihilo]) << 48) + | (static_cast(bytes[hilohi]) << 40) + | (static_cast(bytes[hilolo]) << 32) + | (static_cast(bytes[lohihi]) << 24) + | (static_cast(bytes[lohilo]) << 16) + | (static_cast(bytes[lolohi]) << 8) + | (static_cast(bytes[lololo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3] + && bytes[4] == cmp.bytes[4] + && bytes[5] == cmp.bytes[5] + && bytes[6] == cmp.bytes[6] + && bytes[7] == cmp.bytes[7]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; + +using IEEE754binary32EmulatedBE = IEEE754binary32Emulated<0, 1, 2, 3>; +using IEEE754binary32EmulatedLE = IEEE754binary32Emulated<3, 2, 1, 0>; +using IEEE754binary64EmulatedBE = IEEE754binary64Emulated<0, 1, 2, 3, 4, 5, 6, 7>; +using IEEE754binary64EmulatedLE = IEEE754binary64Emulated<7, 6, 5, 4, 3, 2, 1, 0>; + +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedLE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedLE &) { + return true; +} + +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(8)); + +template +struct IEEE754binary32Native { +public: + float32 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return static_cast(EncodeIEEE754binary32(value) >> (i * 8)); + } + if constexpr (endian == mpt::endian::big) { + return static_cast(EncodeIEEE754binary32(value) >> ((4 - 1 - i) * 8)); + } + } + IEEE754binary32Native() = default; + MPT_FORCEINLINE explicit IEEE754binary32Native(float32 f) { + value = f; + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 24) | (static_cast(b1) << 16) | (static_cast(b2) << 8) | (static_cast(b3) << 0)); + } + } + MPT_FORCEINLINE operator float32() const { + return value; + } + MPT_FORCEINLINE IEEE754binary32Native & SetInt32(uint32 i) { + value = DecodeIEEE754binary32(i); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return EncodeIEEE754binary32(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary32Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary32Native & cmp) const { + return value != cmp.value; + } +}; + +template +struct IEEE754binary64Native { +public: + float64 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> (i * 8))); + } + if constexpr (endian == mpt::endian::big) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> ((8 - 1 - i) * 8))); + } + } + IEEE754binary64Native() = default; + MPT_FORCEINLINE explicit IEEE754binary64Native(float64 f) { + value = f; + } + MPT_FORCEINLINE explicit IEEE754binary64Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24) | (static_cast(b4) << 32) | (static_cast(b5) << 40) | (static_cast(b6) << 48) | (static_cast(b7) << 56)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 56) | (static_cast(b1) << 48) | (static_cast(b2) << 40) | (static_cast(b3) << 32) | (static_cast(b4) << 24) | (static_cast(b5) << 16) | (static_cast(b6) << 8) | (static_cast(b7) << 0)); + } + } + MPT_FORCEINLINE operator float64() const { + return value; + } + MPT_FORCEINLINE IEEE754binary64Native & SetInt64(uint64 i) { + value = DecodeIEEE754binary64(i); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return EncodeIEEE754binary64(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary64Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary64Native & cmp) const { + return value != cmp.value; + } +}; + +static_assert((sizeof(IEEE754binary32Native<>) == 4)); +static_assert((sizeof(IEEE754binary64Native<>) == 8)); + +constexpr bool declare_binary_safe(const IEEE754binary32Native<> &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64Native<> &) noexcept { + return true; +} + +template +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32Native<>; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64Native<>; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32Native<>; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64Native<>; +}; + +using IEEE754binary32LE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64BE; + +static_assert(sizeof(IEEE754binary32LE) == 4); +static_assert(sizeof(IEEE754binary32BE) == 4); +static_assert(sizeof(IEEE754binary64LE) == 8); +static_assert(sizeof(IEEE754binary64BE) == 8); + + +// unaligned + +using float32le = IEEE754binary32EmulatedLE; +using float32be = IEEE754binary32EmulatedBE; +using float64le = IEEE754binary64EmulatedLE; +using float64be = IEEE754binary64EmulatedBE; + +static_assert(sizeof(float32le) == 4); +static_assert(sizeof(float32be) == 4); +static_assert(sizeof(float64le) == 8); +static_assert(sizeof(float64be) == 8); + + +// potentially aligned + +using float32le_fast = IEEE754binary32LE; +using float32be_fast = IEEE754binary32BE; +using float64le_fast = IEEE754binary64LE; +using float64be_fast = IEEE754binary64BE; + +static_assert(sizeof(float32le_fast) == 4); +static_assert(sizeof(float32be_fast) == 4); +static_assert(sizeof(float64le_fast) == 8); +static_assert(sizeof(float64be_fast) == 8); + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/integer.hpp =================================================================== --- src/mpt/endian/integer.hpp (nonexistent) +++ src/mpt/endian/integer.hpp (working copy) @@ -0,0 +1,487 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/bit.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include +#include +#include + +#if MPT_COMPILER_MSVC +#include +#endif + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct BigEndian_tag { + static constexpr mpt::endian endian = mpt::endian::big; +}; + +struct LittleEndian_tag { + static constexpr mpt::endian endian = mpt::endian::little; +}; + + + +constexpr inline uint16 constexpr_bswap16(uint16 x) noexcept { + return uint16(0) + | ((x >> 8) & 0x00FFu) + | ((x << 8) & 0xFF00u); +} + +constexpr inline uint32 constexpr_bswap32(uint32 x) noexcept { + return uint32(0) + | ((x & 0x000000FFu) << 24) + | ((x & 0x0000FF00u) << 8) + | ((x & 0x00FF0000u) >> 8) + | ((x & 0xFF000000u) >> 24); +} + +constexpr inline uint64 constexpr_bswap64(uint64 x) noexcept { + return uint64(0) + | (((x >> 0) & 0xffull) << 56) + | (((x >> 8) & 0xffull) << 48) + | (((x >> 16) & 0xffull) << 40) + | (((x >> 24) & 0xffull) << 32) + | (((x >> 32) & 0xffull) << 24) + | (((x >> 40) & 0xffull) << 16) + | (((x >> 48) & 0xffull) << 8) + | (((x >> 56) & 0xffull) << 0); +} + +#if MPT_COMPILER_GCC +#define MPT_bswap16 __builtin_bswap16 +#define MPT_bswap32 __builtin_bswap32 +#define MPT_bswap64 __builtin_bswap64 +#elif MPT_COMPILER_MSVC +#define MPT_bswap16 _byteswap_ushort +#define MPT_bswap32 _byteswap_ulong +#define MPT_bswap64 _byteswap_uint64 +#endif + +// No intrinsics available +#ifndef MPT_bswap16 +#define MPT_bswap16(x) mpt::constexpr_bswap16(x) +#endif +#ifndef MPT_bswap32 +#define MPT_bswap32(x) mpt::constexpr_bswap32(x) +#endif +#ifndef MPT_bswap64 +#define MPT_bswap64(x) mpt::constexpr_bswap64(x) +#endif + + + +template +MPT_CONSTEXPRINLINE std::array EndianEncode(T val) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + unsigned_base_type uval = static_cast(val); + std::array data{}; + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[(sizeof(base_type) - 1) - i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } + return data; +} + +template +MPT_CONSTEXPRINLINE T EndianDecode(std::array data) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + base_type val = base_type(); + unsigned_base_type uval = unsigned_base_type(); + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[i])) << (i * 8); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[(sizeof(base_type) - 1) - i])) << (i * 8); + } + } + val = static_cast(uval); + return val; +} + + +MPT_CONSTEXPR20_FUN uint64 SwapBytesImpl(uint64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN uint32 SwapBytesImpl(uint32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN uint16 SwapBytesImpl(uint16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +MPT_CONSTEXPR20_FUN int64 SwapBytesImpl(int64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN int32 SwapBytesImpl(int32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN int16 SwapBytesImpl(int16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +// Do NOT remove these overloads, even if they seem useless. +// We do not want risking to extend 8bit integers to int and then +// endian-converting and casting back to int. +// Thus these overloads. + +MPT_CONSTEXPR20_FUN uint8 SwapBytesImpl(uint8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN int8 SwapBytesImpl(int8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN char SwapBytesImpl(char value) noexcept { + return value; +} + +#undef MPT_bswap16 +#undef MPT_bswap32 +#undef MPT_bswap64 + + + +// On-disk integer types with defined endianness and no alignemnt requirements +// Note: To easily debug module loaders (and anything else that uses this +// wrapper struct), you can use the Debugger Visualizers available in +// build/vs/debug/ to conveniently view the wrapped contents. + +template +struct packed { +public: + using base_type = T; + using endian_type = Tendian; + +public: + std::array data; + +public: + MPT_CONSTEXPR20_FUN void set(base_type val) noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * (sizeof(base_type) - 1 - i))) & 0xffu); + } + } else { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * i)) & 0xffu); + } + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + std::memcpy(data.data(), &val, sizeof(val)); + } else { + using unsigned_base_type = typename std::make_unsigned::type; + data = EndianEncode(val); + } + } + } + MPT_CONSTEXPR20_FUN base_type get() const noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * (sizeof(base_type) - 1 - i)); + } + return static_cast(uval); + } else { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * i); + } + return static_cast(uval); + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + base_type val = base_type(); + std::memcpy(&val, data.data(), sizeof(val)); + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + return val; + } else { + using unsigned_base_type = typename std::make_unsigned::type; + return EndianDecode(data); + } + } + } + MPT_CONSTEXPR20_FUN packed & operator=(const base_type & val) noexcept { + set(val); + return *this; + } + MPT_CONSTEXPR20_FUN operator base_type() const noexcept { + return get(); + } + +public: + MPT_CONSTEXPR20_FUN packed & operator&=(base_type val) noexcept { + set(get() & val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator|=(base_type val) noexcept { + set(get() | val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator^=(base_type val) noexcept { + set(get() ^ val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator+=(base_type val) noexcept { + set(get() + val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator-=(base_type val) noexcept { + set(get() - val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator*=(base_type val) noexcept { + set(get() * val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator/=(base_type val) noexcept { + set(get() / val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator%=(base_type val) noexcept { + set(get() % val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator++() noexcept { // prefix + set(get() + 1); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator--() noexcept { // prefix + set(get() - 1); + return *this; + } + MPT_CONSTEXPR20_FUN base_type operator++(int) noexcept { // postfix + base_type old = get(); + set(old + 1); + return old; + } + MPT_CONSTEXPR20_FUN base_type operator--(int) noexcept { // postfix + base_type old = get(); + set(old - 1); + return old; + } +}; + +using int64le = packed; +using int32le = packed; +using int16le = packed; +using int8le = packed; +using uint64le = packed; +using uint32le = packed; +using uint16le = packed; +using uint8le = packed; + +using int64be = packed; +using int32be = packed; +using int16be = packed; +using int8be = packed; +using uint64be = packed; +using uint32be = packed; +using uint16be = packed; +using uint8be = packed; + +constexpr bool declare_binary_safe(const int64le &) { + return true; +} +constexpr bool declare_binary_safe(const int32le &) { + return true; +} +constexpr bool declare_binary_safe(const int16le &) { + return true; +} +constexpr bool declare_binary_safe(const int8le &) { + return true; +} +constexpr bool declare_binary_safe(const uint64le &) { + return true; +} +constexpr bool declare_binary_safe(const uint32le &) { + return true; +} +constexpr bool declare_binary_safe(const uint16le &) { + return true; +} +constexpr bool declare_binary_safe(const uint8le &) { + return true; +} + +constexpr bool declare_binary_safe(const int64be &) { + return true; +} +constexpr bool declare_binary_safe(const int32be &) { + return true; +} +constexpr bool declare_binary_safe(const int16be &) { + return true; +} +constexpr bool declare_binary_safe(const int8be &) { + return true; +} +constexpr bool declare_binary_safe(const uint64be &) { + return true; +} +constexpr bool declare_binary_safe(const uint32be &) { + return true; +} +constexpr bool declare_binary_safe(const uint16be &) { + return true; +} +constexpr bool declare_binary_safe(const uint8be &) { + return true; +} + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + + + +template +struct make_le { + using type = packed::type, LittleEndian_tag>; +}; + +template +struct make_be { + using type = packed::type, BigEndian_tag>; +}; + +template +MPT_CONSTEXPR20_FUN auto as_le(T v) noexcept -> typename mpt::make_le::type>::type { + typename mpt::make_le::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN auto as_be(T v) noexcept -> typename mpt::make_be::type>::type { + typename mpt::make_be::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN Tpacked as_endian(typename Tpacked::base_type v) noexcept { + Tpacked res{}; + res = v; + return res; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +namespace std { +template +class numeric_limits> : public std::numeric_limits { }; +template +class numeric_limits> : public std::numeric_limits { }; +} // namespace std + + + +#endif // MPT_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_floatingpoint.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_floatingpoint.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_floatingpoint.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/floatingpoint.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace floatingpoint { + +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +{ + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(1.0f), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(-1.0f), 0xbf800000u); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x41840000u), 16.5f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3faa0000u), 1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbfaa0000u), -1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbf800000u), -1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f), IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f), IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00))); + + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(1.0), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(-1.0), 0xbff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x4030800000000000ull), 16.5); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3FF5400000000000ull), 1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xBFF5400000000000ull), -1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xbff0000000000000ull), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0), IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0), IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00))); +} + +} // namespace floatingpoint +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/tests/tests_endian_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_integer.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_integer.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_integer.hpp (working copy) @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace integer { + +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +{ + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + struct test_endian_constexpr { + static MPT_CONSTEXPR20_FUN int32le test(uint32 x) { + int32le foo{}; + foo = x; + return foo; + } + }; + + MPT_CONSTEXPR20_VAR int32le foo = test_endian_constexpr::test(23); + static_cast(foo); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint8(0x12)), 0x12); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint16(0x1234)), 0x3412); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint32(0x12345678u)), 0x78563412u); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint64(0x123456789abcdef0ull)), 0xf0debc9a78563412ull); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int8(std::numeric_limits::min())), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int16(std::numeric_limits::min())), int16(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int32(std::numeric_limits::min())), int32(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int64(std::numeric_limits::min())), int64(0x80)); + + // Packed integers with defined endianness + { + int8le le8; + le8.set(-128); + int8be be8; + be8.set(-128); + MPT_TEST_EXPECT_EQUAL(le8, -128); + MPT_TEST_EXPECT_EQUAL(be8, -128); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le8, "\x80", 1), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be8, "\x80", 1), 0); + int16le le16; + le16.set(0x1234); + int16be be16; + be16.set(0x1234); + MPT_TEST_EXPECT_EQUAL(le16, 0x1234); + MPT_TEST_EXPECT_EQUAL(be16, 0x1234); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le16, "\x34\x12", 2), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be16, "\x12\x34", 2), 0); + uint32le le32; + le32.set(0xFFEEDDCCu); + uint32be be32; + be32.set(0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(le32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(be32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le32, "\xCC\xDD\xEE\xFF", 4), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be32, "\xFF\xEE\xDD\xCC", 4), 0); + uint64le le64; + le64.set(0xDEADC0DE15C0FFEEull); + uint64be be64; + be64.set(0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(le64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(be64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le64, "\xEE\xFF\xC0\x15\xDE\xC0\xAD\xDE", 8), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be64, "\xDE\xAD\xC0\xDE\x15\xC0\xFF\xEE", 8), 0); + } +} + +} // namespace integer +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/tests/tests_endian_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/environment/environment.hpp =================================================================== --- src/mpt/environment/environment.hpp (nonexistent) +++ src/mpt/environment/environment.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENVIRONMENT_ENVIRONMENT_HPP +#define MPT_ENVIRONMENT_ENVIRONMENT_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/system_error/system_error.hpp" + +#include +#if MPT_OS_WINDOWS +#if defined(UNICODE) && !MPT_OS_WINDOWS_WINRT +#include +#endif // !MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::optional getenv(const mpt::ustring & env_var) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT + MPT_UNUSED(env_var); + return std::nullopt; +#elif MPT_OS_WINDOWS && defined(UNICODE) + std::vector buf(32767); + DWORD size = GetEnvironmentVariable(mpt::convert(env_var).c_str(), buf.data(), 32767); + if (size == 0) { + mpt::windows::ExpectError(ERROR_ENVVAR_NOT_FOUND); + return std::nullopt; + } + return mpt::convert(buf.data()); +#else + const char * val = std::getenv(mpt::convert(mpt::environment_encoding, env_var).c_str()); + if (!val) { + return std::nullopt; + } + return mpt::convert(mpt::environment_encoding, val); +#endif +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENVIRONMENT_ENVIRONMENT_HPP Property changes on: src/mpt/environment/environment.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/exception_text/exception_text.hpp =================================================================== --- src/mpt/exception_text/exception_text.hpp (nonexistent) +++ src/mpt/exception_text/exception_text.hpp (working copy) @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP +#define MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline Tstring get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return mpt::convert(mpt::exception_string{e.what()}); + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return mpt::convert(mpt::source_string{typeid(e).name()}); + } else { + return mpt::convert(mpt::source_string{"unknown exception name"}); + } +} + +template <> +inline std::string get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return std::string{e.what()}; + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return std::string{typeid(e).name()}; + } else { + return std::string{"unknown exception name"}; + } +} + + +template +inline Tstring get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return mpt::convert(mpt::source_string{"unknown exception"}); + } +} + +template <> +inline std::string get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return std::string{"unknown exception"}; + } +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP Property changes on: src/mpt/exception_text/exception_text.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_floatingpoint.hpp =================================================================== --- src/mpt/format/default_floatingpoint.hpp (nonexistent) +++ src/mpt/format/default_floatingpoint.hpp (working copy) @@ -0,0 +1,91 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP +#define MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" + +#if MPT_MSVC_AT_LEAST(2019, 4) || MPT_GCC_AT_LEAST(11, 1, 0) +#define MPT_FORMAT_CXX17_FLOAT 1 +#else +#define MPT_FORMAT_CXX17_FLOAT 0 +#endif + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} +#endif + + +#if !MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + s << std::setprecision(std::numeric_limits::max_digits10) << x; + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP Property changes on: src/mpt/format/default_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_formatter.hpp =================================================================== --- src/mpt/format/default_formatter.hpp (nonexistent) +++ src/mpt/format/default_formatter.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_FORMATTER_HPP +#define MPT_FORMAT_DEFAULT_FORMATTER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/default_integer.hpp" +#include "mpt/format/default_string.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct default_formatter { + template + static inline Tstring format(const T & value) { + using namespace mpt; + return format_value_default(value); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_FORMATTER_HPP Property changes on: src/mpt/format/default_formatter.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_integer.hpp =================================================================== --- src/mpt/format/default_integer.hpp (nonexistent) +++ src/mpt/format/default_integer.hpp (working copy) @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_INTEGER_HPP +#define MPT_FORMAT_DEFAULT_INTEGER_HPP + + +#include "mpt/base/detect.hpp" + +#if 1 +#define MPT_FORMAT_CXX17_INT 1 +#else +#define MPT_FORMAT_CXX17_INT 0 +#endif + +#if MPT_FORMAT_CXX17_INT +#include "mpt/base/algorithm.hpp" +#endif // MPT_FORMAT_CXX17_INT +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#if !MPT_FORMAT_CXX17_INT +#include +#include +#include +#endif // !MPT_FORMAT_CXX17_INT +#include +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x)); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} + +#endif // MPT_FORMAT_CXX17_INT + + +#if !MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + if constexpr (std::is_same::value) { + s << static_cast(x); + } else if constexpr (mpt::is_character::value) { + s << (x + 0); // force integral promotion + } else { + s << x; + } + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} + +#endif // !MPT_FORMAT_CXX17_INT + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_INTEGER_HPP Property changes on: src/mpt/format/default_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_string.hpp =================================================================== --- src/mpt/format/default_string.hpp (nonexistent) +++ src/mpt/format/default_string.hpp (working copy) @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_STRING_HPP +#define MPT_FORMAT_DEFAULT_STRING_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline auto format_value_default(const T & x) -> decltype(mpt::convert(x)) { + return mpt::convert(x); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_STRING_HPP Property changes on: src/mpt/format/default_string.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/helpers.hpp =================================================================== --- src/mpt/format/helpers.hpp (nonexistent) +++ src/mpt/format/helpers.hpp (working copy) @@ -0,0 +1,106 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_HELPERS_HPP +#define MPT_FORMAT_HELPERS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline Tdststring convert_formatted_simple(const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return src; + } else { + Tdststring dst; + dst.reserve(src.length()); + for (std::size_t i = 0; i < src.length(); ++i) { + dst.push_back(mpt::unsafe_char_convert(src[i])); + } + return dst; + } +} + + +template +struct select_format_char_type { + using type = char; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#if MPT_USTRING_MODE_WIDE +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // C++20 +template <> +struct select_format_char_type { + using type = wchar_t; +}; +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // MPT_USTRING_MODE_WIDE +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + +template +struct select_format_string_type { + using type = mpt::ustring; +}; + +template <> +struct select_format_string_type { + using type = std::string; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_string_type { + using type = std::wstring; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_string_type { + using type = std::u8string; +}; +#endif // C++20 + +template <> +struct select_format_string_type { + using type = std::u16string; +}; + +template <> +struct select_format_string_type { + using type = std::u32string; +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_HELPERS_HPP Property changes on: src/mpt/format/helpers.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message.hpp =================================================================== --- src/mpt/format/message.hpp (nonexistent) +++ src/mpt/format/message.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class format_message_syntax_error + : public std::domain_error { +public: + format_message_syntax_error() + : std::domain_error("format string syntax error") { + return; + } +}; + +template +class message_formatter { + +public: + using Tstring = typename mpt::make_string_type::type; + +private: + Tstring format; + +private: + MPT_NOINLINE Tstring do_format(const mpt::span vals) const { + using traits = typename mpt::string_traits; + using char_type = typename traits::char_type; + using size_type = typename traits::size_type; + Tstring result; + const size_type len = traits::length(format); + traits::reserve(result, len); + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (size_type pos = 0; pos != len; ++pos) { + char_type c = format[pos]; + switch (state) { + case state::text: + if (c == char_type('{')) { + state = state::open_seen; + } else if (c == char_type('}')) { + state = state::close_seen; + } else { + state = state::text; + traits::append(result, 1, c); // output c here + } + break; + case state::open_seen: + if (c == char_type('{')) { + state = state::text; + traits::append(result, 1, char_type('{')); // output { here + } else if (c == char_type('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - char_type('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + this_arg = current_arg + 1; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - char_type('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + traits::append(result, 1, char_type('}')); // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + return result; + } + +public: + MPT_FORCEINLINE message_formatter(Tstring format_) + : format(std::move(format_)) { + } + +public: + template + MPT_NOINLINE Tstring operator()(Ts &&... xs) const { + const std::array vals{{Tformatter::template format(std::forward(xs))...}}; + return do_format(mpt::as_span(vals)); + } + +}; // struct message_formatter + + +template +class message_formatter_counted { + +private: + message_formatter formatter; + +public: + template + inline message_formatter_counted(const Tchar (&format)[literal_length]) + : formatter(Tstring(format)) { + return; + } + +public: + template + inline Tstring operator()(Ts &&... xs) const { + static_assert(static_cast(sizeof...(xs)) == N); + return formatter(std::forward(xs)...); + } + +}; // struct message_formatter_counted + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count_impl(const Tchar * const format, const std::size_t len) { + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (std::size_t pos = 0; pos != len; ++pos) { + Tchar c = format[pos]; + switch (state) { + case state::text: + if (c == Tchar('{')) { + state = state::open_seen; + } else if (c == Tchar('}')) { + state = state::close_seen; + } else { + state = state::text; + // output c here + } + break; + case state::open_seen: + if (c == Tchar('{')) { + state = state::text; + // output { here + } else if (c == Tchar('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + // output this_arg here + if (this_arg > max_arg) + { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - Tchar('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + this_arg = current_arg + 1; + // output this_arg here + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - Tchar('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + if (max_arg != args) { + throw format_message_syntax_error(); + } + return max_arg; +} + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count(const Tchar (&format)[literal_length]) { + return parse_format_string_argument_count_impl(format, literal_length - 1); +} + + +template +inline auto format_message(const Tchar (&format)[N]) { + using Tstring = typename mpt::make_string_type::type; + return message_formatter_counted(format); +} + +template +inline auto format_message_typed(const Tchar (&format)[N]) { + return message_formatter_counted(format); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message_macros.hpp =================================================================== --- src/mpt/format/message_macros.hpp (nonexistent) +++ src/mpt/format/message_macros.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_MACROS_HPP +#define MPT_FORMAT_MESSAGE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/message.hpp" + + + +#define MPT_FORMAT_MESSAGE(f) mpt::format_message(f) + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#define MPT_WFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#define MPT_UFORMAT_MESSAGE(f) mpt::format_message_typed(MPT_ULITERAL(f)) + +#define MPT_LFORMAT_MESSAGE(f) mpt::format_message_typed(f) + +#if MPT_OS_WINDOWS +#define MPT_TFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_OS_WINDOWS + +#if MPT_DETECTED_MFC +#define MPT_CWFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#define MPT_CAFORMAT_MESSAGE(f) mpt::format_message_typed(f) +#define MPT_CFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_DETECTED_MFC + + + +#endif // MPT_FORMAT_MESSAGE_MACROS_HPP Property changes on: src/mpt/format/message_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple.hpp =================================================================== --- src/mpt/format/simple.hpp (nonexistent) +++ src/mpt/format/simple.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/simple_floatingpoint.hpp" +#include "mpt/format/simple_integer.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string/utility.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +struct format : format_simple_base { + + template + static inline Tstring val(const T & x) { + return mpt::default_formatter::format(x); + } + + template + static inline Tstring fmt(const T & x, const format_simple_spec & f) { + return mpt::format_simple(x, f); + } + + template + static inline Tstring dec(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff()); + } + template + static inline Tstring dec0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width)); + } + + template + static inline Tstring dec(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring dec0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring hex(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff()); + } + template + static inline Tstring HEX(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff()); + } + template + static inline Tstring hex0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width)); + } + template + static inline Tstring HEX0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width)); + } + + template + static inline Tstring hex(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring HEX(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring hex0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width).Group(g).GroupSep(s)); + } + template + static inline Tstring HEX0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring flt(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaNrm().FillOff().Precision(precision)); + } + template + static inline Tstring fix(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaFix().FillOff().Precision(precision)); + } + template + static inline Tstring sci(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaSci().FillOff().Precision(precision)); + } + + template + static inline Tstring ptr(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return hex0(mpt::pointer_cast(x)); + } + template + static inline Tstring PTR(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return HEX0(mpt::pointer_cast(x)); + } + + static inline Tstring pad_left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, width, 0); + } + static inline Tstring pad_right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, 0, width); + } + static inline Tstring left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, 0, width - traits::length(str)) : str; + } + static inline Tstring right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, width - traits::length(str), 0) : str; + } + static inline Tstring center(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, (width - traits::length(str)) / 2, (width - traits::length(str) + 1) / 2) : str; + } + +}; // struct format + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_floatingpoint.hpp =================================================================== --- src/mpt/format/simple_floatingpoint.hpp (nonexistent) +++ src/mpt/format/simple_floatingpoint.hpp (working copy) @@ -0,0 +1,241 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP +#define MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP + + + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#endif +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_FORMAT_CXX17_FLOAT + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt, int precision) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt, precision); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template +inline Tstring format_simple_floatingpoint_postprocess_width(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() - std::distance(str.begin(), pos) < width) { + str.insert(pos, width - str.length() - std::distance(str.begin(), pos), '0'); + } + } else { + if (str.length() < width) { + str.insert(0, width - str.length(), ' '); + } + } + return str; +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & f) { + using format_string_type = typename mpt::select_format_string_type::type; + if (f.GetPrecision() != -1) { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific, f.GetPrecision()), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed, f.GetPrecision()), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general, f.GetPrecision()), f)); + } + } else { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general), f)); + } + } +} + + +#else // !MPT_FORMAT_CXX17_FLOAT + + +template +struct NumPunct : std::numpunct { +private: + unsigned int group; + char sep; + +public: + NumPunct(unsigned int g, char s) + : group(g) + , sep(s) { } + std::string do_grouping() const override { + return std::string(1, static_cast(group)); + } + Tchar do_thousands_sep() const override { + return static_cast(sep); + } +}; + +template +inline void format_simple_floatingpoint_apply_stream_format(Tostream & o, const format_simple_spec & format, const T &) { + if (format.GetGroup() > 0) + { + o.imbue(std::locale(o.getloc(), new NumPunct(format.GetGroup(), format.GetGroupSep()))); + } + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + int precision = format.GetPrecision(); + if (precision != -1 && width != 0 && !(f & format_simple_base::NotaFix) && !(f & format_simple_base::NotaSci)) + { + // fixup: + // precision behaves differently from .# + // avoid default format when precision and width are set + f &= ~format_simple_base::NotaNrm; + f |= format_simple_base::NotaFix; + } + if (f & format_simple_base::BaseDec) { + o << std::dec; + } else if (f & format_simple_base::BaseHex) { + o << std::hex; + } + if (f & format_simple_base::NotaNrm) { /*nothing*/ + } else if (f & format_simple_base::NotaFix) { + o << std::setiosflags(std::ios::fixed); + } else if (f & format_simple_base::NotaSci) { + o << std::setiosflags(std::ios::scientific); + } + if (f & format_simple_base::CaseLow) { + o << std::nouppercase; + } else if (f & format_simple_base::CaseUpp) { + o << std::uppercase; + } + if (f & format_simple_base::FillOff) { /* nothing */ + } else if (f & format_simple_base::FillNul) { + o << std::setw(width) << std::setfill(typename Tostream::char_type('0')); + } + if (precision != -1) + { + o << std::setprecision(precision); + } else + { + if constexpr (std::is_floating_point::value) + { + if (f & format_simple_base::NotaNrm) + { + o << std::setprecision(std::numeric_limits::max_digits10); + } else if (f & format_simple_base::NotaFix) + { + o << std::setprecision(std::numeric_limits::digits10); + } else if (f & format_simple_base::NotaSci) + { + o << std::setprecision(std::numeric_limits::max_digits10 - 1); + } else + { + o << std::setprecision(std::numeric_limits::max_digits10); + } + } + } +} + + +template +inline Tstring format_simple_floatingpoint_stream(const T & x, const format_simple_spec & f) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + mpt::format_simple_floatingpoint_apply_stream_format(s, f, x); + s << x; + return mpt::convert_formatted_simple(s.str()); +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + return mpt::convert(mpt::format_simple_floatingpoint_stream::type>(x, format)); +} + + + +#endif // MPT_FORMAT_CXX17_FLOAT + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP Property changes on: src/mpt/format/simple_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_integer.hpp =================================================================== --- src/mpt/format/simple_integer.hpp (nonexistent) +++ src/mpt/format/simple_integer.hpp (working copy) @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_INTEGER_HPP +#define MPT_FORMAT_SIMPLE_INTEGER_HPP + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" + +#include +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template ::value, bool> = true> +inline Tstring format_simple_integer_to_chars(const T & x, int base) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x), base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_integer_postprocess_case(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + if (f & format_simple_base::CaseUpp) { + for (auto & c : str) { + if (mpt::unsafe_char_convert('a') <= c && c <= mpt::unsafe_char_convert('z')) { + c -= mpt::unsafe_char_convert('a') - mpt::unsafe_char_convert('A'); + } + } + } + return str; +} + + +template +inline Tstring format_simple_integer_postprocess_digits(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() < width) { + str.insert(pos, width - str.length(), mpt::unsafe_char_convert('0')); + } + } + return str; +} + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4723) // potential divide by 0 +#endif // MPT_COMPILER_MSVC +template +inline Tstring format_simple_integer_postprocess_group(Tstring str, const format_simple_spec & format) { + if (format.GetGroup() > 0) { + const unsigned int groupSize = format.GetGroup(); + const char groupSep = format.GetGroupSep(); + std::size_t len = str.length(); + for (std::size_t n = 0; n < len; ++n) { + if (n > 0 && (n % groupSize) == 0) { + if (!(n == (len - 1) && (str[0] == mpt::unsafe_char_convert('+') || str[0] == mpt::unsafe_char_convert('-')))) { + str.insert(str.begin() + (len - n), 1, mpt::unsafe_char_convert(groupSep)); + } + } + } + } + return str; +} +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + int base = 10; + if (format.GetFlags() & format_simple_base::BaseDec) { + base = 10; + } + if (format.GetFlags() & format_simple_base::BaseHex) { + base = 16; + } + using format_string_type = typename mpt::select_format_string_type::type; + return mpt::convert(mpt::format_simple_integer_postprocess_group(mpt::format_simple_integer_postprocess_digits(mpt::format_simple_integer_postprocess_case(mpt::format_simple_integer_to_chars(x, base), format), format), format)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_INTEGER_HPP Property changes on: src/mpt/format/simple_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_spec.hpp =================================================================== --- src/mpt/format/simple_spec.hpp (nonexistent) +++ src/mpt/format/simple_spec.hpp (working copy) @@ -0,0 +1,218 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_SPEC_HPP +#define MPT_FORMAT_SIMPLE_SPEC_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct format_simple_base { + + enum FormatFlagsEnum + { + BaseDec = 0x0001, // base 10 (integers only) // int+float + BaseHex = 0x0002, // base 16 (integers only) // int+float + CaseLow = 0x0010, // lower case hex digits // int+float + CaseUpp = 0x0020, // upper case hex digits // int+float + FillOff = 0x0100, // do not fill up width // int+float + FillNul = 0x0400, // fill up width with zeros // int+float + NotaNrm = 0x1000, // float: normal/default notation // float + NotaFix = 0x2000, // float: fixed point notation // float + NotaSci = 0x4000, // float: scientific notation // float + }; + +}; // struct format_simple_base + +using format_simple_flags = unsigned int; + +static_assert(sizeof(format_simple_flags) >= sizeof(format_simple_base::FormatFlagsEnum)); + + +class format_simple_spec { +private: + format_simple_flags flags; + std::size_t width; // int+float + int precision; // float + unsigned int group; // int + char group_sep; // int +public: + MPT_CONSTEXPRINLINE format_simple_spec() noexcept + : flags(0), width(0), precision(-1), group(0), group_sep(',') { } + MPT_CONSTEXPRINLINE format_simple_flags GetFlags() const noexcept { + return flags; + } + MPT_CONSTEXPRINLINE std::size_t GetWidth() const noexcept { + return width; + } + MPT_CONSTEXPRINLINE int GetPrecision() const noexcept { + return precision; + } + MPT_CONSTEXPRINLINE unsigned int GetGroup() const noexcept { + return group; + } + MPT_CONSTEXPRINLINE char GetGroupSep() const noexcept { + return group_sep; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetFlags(format_simple_flags f) noexcept { + flags = f; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetWidth(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetPrecision(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroup(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & BaseDec() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseDec; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & BaseHex() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseHex; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseLow() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseLow; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseUpp() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseUpp; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillOff() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillOff; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNul() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillNul; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaNrm() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaNrm; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaFix() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaFix; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaSci() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaSci; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Width(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Prec(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Group(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & GroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Dec() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hex() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Low() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upp() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Off() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nul() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nrm() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Fix() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Sci() noexcept { + return NotaSci(); + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Decimal() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hexadecimal() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Lower() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upper() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNone() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillZero() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatNormal() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatFixed() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatScientific() noexcept { + return NotaSci(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Precision(int p) noexcept { + return Prec(p); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_SPEC_HPP Property changes on: src/mpt/format/simple_spec.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_message.hpp =================================================================== --- src/mpt/format/tests/tests_format_message.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_message.hpp (working copy) @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace message { + +MPT_TEST_GROUP_INLINE("mpt/format/message") +{ + static_assert(mpt::parse_format_string_argument_count("") == 0); + static_assert(mpt::parse_format_string_argument_count("{{") == 0); + static_assert(mpt::parse_format_string_argument_count("}}") == 0); + static_assert(mpt::parse_format_string_argument_count("{}") == 1); + static_assert(mpt::parse_format_string_argument_count("{}{}") == 2); + static_assert(mpt::parse_format_string_argument_count("{0}{1}") == 2); + + // basic + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}{}{}")(1, 2, 3), "123"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}")(1, 2, 3), "321"); + + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}{4}{3}{6}{5}{7}{10}{9}{8}")(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a"), "21043657a98"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE(L"{}{}{}")(1, 2, 3), L"123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + // escaping behviour + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%%")(), "%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}")("a"), "a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%%")("a"), "a%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%1")(), "%1"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%{}")("a"), "%a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%b")(), "%b"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{}}")(), "{}"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{{}}}")("a"), "{a}"); +} + +} // namespace message +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/tests/tests_format_message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_simple.hpp =================================================================== --- src/mpt/format/tests/tests_format_simple.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_simple.hpp (working copy) @@ -0,0 +1,161 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace simple { + +MPT_TEST_GROUP_INLINE("mpt/format/simple") +{ + MPT_TEST_EXPECT_EQUAL(mpt::format::val(1.5f), "1.5"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(true), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(false), "0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(0), "0"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-23), "-23"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(42), "42"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<3>((int32)-1), "-001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex((int32)-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(-0xabcde), "-abcde"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min()), "-80000000"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min() + 1), "-7fffffff"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), "123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), "00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), "123e"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(1), "01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(1), "001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(11), "011"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(-1), "-01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(-1), "-001"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(0xa2345678), MPT_USTRING("0A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(0xa2345678), MPT_USTRING("00A2345678")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), L"123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), L"00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), L"123e"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-87.0f), "-87"); + if (mpt::format::val(-0.5e-6) != "-5e-007" + && mpt::format::val(-0.5e-6) != "-5e-07" + && mpt::format::val(-0.5e-6) != "-5e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-07" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-007") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-005" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-05" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-5" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(58.65403492763) != "58.654034927630001" + && mpt::format::val(58.65403492763) != "58.65403492763") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(58.65403492763, 6), "58.654"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(23.42, 1), "23.4"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(234.2, 1), "234.2"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(2342.0, 1), "2342.0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 2345678), std::string("2;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), std::string("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), std::string("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), MPT_USTRING("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), MPT_USTRING("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', 0xa2345678), MPT_USTRING("0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', 0xa2345678), MPT_USTRING("0:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', 0xa2345678), MPT_USTRING("00:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', 0xa2345678), MPT_USTRING("000:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', -0x12345678), MPT_USTRING("-012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', -0x12345678), MPT_USTRING("-0:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', -0x12345678), MPT_USTRING("-00:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', -0x12345678), MPT_USTRING("-000:012:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0x345678), MPT_USTRING("0:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x345678), MPT_USTRING("-0:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::left(3, "a"), "a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::right(3, "a"), " a"); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(3, "a"), " a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(4, "a"), " a "); + + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), "6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 4), "6.1235"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), L"6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), L"6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), L"6.123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace simple +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/tests/tests_format_simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/json/json.hpp =================================================================== --- src/mpt/json/json.hpp (nonexistent) +++ src/mpt/json/json.hpp (working copy) @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_JSON_JSON_HPP +#define MPT_JSON_JSON_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/detect/nlohmann_json.hpp" + +#if MPT_DETECTED_NLOHMANN_JSON +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#include +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmismatched-tags" +#endif // MPT_COMPILER_CLANG +#include "nlohmann/json.hpp" +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG +#endif // MPT_DETECTED_NLOHMANN_JSON + + + +namespace nlohmann { +template <> +struct adl_serializer { + static void to_json(json & j, const mpt::ustring & val) { + j = mpt::convert(mpt::common_encoding::utf8, val); + } + static void from_json(const json & j, mpt::ustring & val) { + val = mpt::convert(mpt::common_encoding::utf8, j.get()); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::map & val) { + std::map utf8map; + for (const auto & value : val) + { + utf8map[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + j = std::move(utf8map); + } + static void from_json(const json & j, std::map & val) { + std::map utf8map = j.get>(); + std::map result; + for (const auto & value : utf8map) + { + result[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + val = std::move(result); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::optional & val) { + j = (val ? json{*val} : json{nullptr}); + } + static void from_json(const json & j, std::optional & val) { + if (!j.is_null()) + { + val = j.get(); + } else + { + val = std::nullopt; + } + } +}; +} // namespace nlohmann + + + +#endif // MPT_JSON_JSON_HPP Property changes on: src/mpt/json/json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/mutex/mutex.hpp =================================================================== --- src/mpt/mutex/mutex.hpp (nonexistent) +++ src/mpt/mutex/mutex.hpp (working copy) @@ -0,0 +1,178 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_MUTEX_MUTEX_HPP +#define MPT_MUTEX_MUTEX_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + +#if !MPT_PLATFORM_MULTITHREADED +#define MPT_MUTEX_NONE 1 +#elif MPT_COMPILER_GENERIC +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) +#define MPT_MUTEX_WIN32 1 +#else +#define MPT_MUTEX_STD 1 +#endif + +#ifndef MPT_MUTEX_STD +#define MPT_MUTEX_STD 0 +#endif +#ifndef MPT_MUTEX_WIN32 +#define MPT_MUTEX_WIN32 0 +#endif +#ifndef MPT_MUTEX_NONE +#define MPT_MUTEX_NONE 0 +#endif + +#if MPT_MUTEX_STD +#if !MPT_COMPILER_GENERIC && (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#include +#else +#include +#endif +#elif MPT_MUTEX_WIN32 +#include +#endif // MPT_MUTEX + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_MUTEX_STD + +using mutex = std::mutex; +using recursive_mutex = std::recursive_mutex; + +#elif MPT_MUTEX_WIN32 + +// compatible with c++11 std::mutex, can eventually be replaced without touching any usage site +class mutex { +private: + CRITICAL_SECTION impl; + +public: + mutex() { + InitializeCriticalSection(&impl); + } + ~mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +// compatible with c++11 std::recursive_mutex, can eventually be replaced without touching any usage site +class recursive_mutex { +private: + CRITICAL_SECTION impl; + +public: + recursive_mutex() { + InitializeCriticalSection(&impl); + } + ~recursive_mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +#else // MPT_MUTEX_NONE + +class mutex { +public: + mutex() { + return; + } + ~mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +class recursive_mutex { +public: + recursive_mutex() { + return; + } + ~recursive_mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +#endif // MPT_MUTEX + +#if MPT_MUTEX_STD + +template +using lock_guard = std::lock_guard; + +#else // !MPT_MUTEX_STD + +// compatible with c++11 std::lock_guard, can eventually be replaced without touching any usage site +template +class lock_guard { +private: + mutex_type & mutex; + +public: + lock_guard(mutex_type & m) + : mutex(m) { + mutex.lock(); + } + ~lock_guard() { + mutex.unlock(); + } +}; + +#endif // MPT_MUTEX_STD + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_MUTEX_MUTEX_HPP Property changes on: src/mpt/mutex/mutex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/osinfo/windows_version.hpp =================================================================== --- src/mpt/osinfo/windows_version.hpp (nonexistent) +++ src/mpt/osinfo/windows_version.hpp (working copy) @@ -0,0 +1,347 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OSINFO_WINDOWS_VERSION_HPP +#define MPT_OSINFO_WINDOWS_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace osinfo { + +namespace windows { + + + +class Version { + +public: + enum Number : uint64 + { + WinNT4 = 0x0000000400000000ull, + Win2000 = 0x0000000500000000ull, + WinXP = 0x0000000500000001ull, + WinXP64 = 0x0000000500000002ull, + WinVista = 0x0000000600000000ull, + Win7 = 0x0000000600000001ull, + Win8 = 0x0000000600000002ull, + Win81 = 0x0000000600000003ull, + Win10 = 0x0000000a00000000ull, + WinNewer = Win10 + 1ull + }; + + struct System { + uint32 Major = 0; + uint32 Minor = 0; + System() = default; + constexpr System(Number number) noexcept + : Major(static_cast((static_cast(number) >> 32) & 0xffffffffu)) + , Minor(static_cast((static_cast(number) >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint64 number) noexcept + : Major(static_cast((number >> 32) & 0xffffffffu)) + , Minor(static_cast((number >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint32 major, uint32 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr operator uint64() const noexcept { + return (static_cast(Major) << 32) | (static_cast(Minor) << 0); + } + }; + + struct ServicePack { + uint16 Major = 0; + uint16 Minor = 0; + ServicePack() = default; + explicit constexpr ServicePack(uint16 major, uint16 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr bool HasServicePack() const noexcept { + return Major != 0 || Minor != 0; + } + constexpr operator uint32() const noexcept { + return (static_cast(Major) << 16) | (static_cast(Minor) << 0); + } + }; + + typedef uint32 Build; + + typedef uint32 TypeId; + +protected: + bool m_SystemIsWindows; + + System m_System; + ServicePack m_ServicePack; + Build m_Build; + TypeId m_Type; + +protected: + Version() noexcept + : m_SystemIsWindows(false) + , m_System() + , m_ServicePack() + , m_Build() + , m_Type() { + } + +public: + static Version NoWindows() noexcept { + return Version(); + } + + Version(mpt::osinfo::windows::Version::System system, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build, mpt::osinfo::windows::Version::TypeId type) noexcept + : m_SystemIsWindows(true) + , m_System(system) + , m_ServicePack(servicePack) + , m_Build(build) + , m_Type(type) { + } + +protected: +#if MPT_OS_WINDOWS + + static mpt::osinfo::windows::Version VersionFromNTDDI_VERSION() noexcept { + // Initialize to used SDK version + mpt::osinfo::windows::Version::System System = +#if NTDDI_VERSION >= 0x0A000000 // NTDDI_WIN10 + mpt::osinfo::windows::Version::Win10 +#elif NTDDI_VERSION >= 0x06030000 // NTDDI_WINBLUE + mpt::osinfo::windows::Version::Win81 +#elif NTDDI_VERSION >= 0x06020000 // NTDDI_WIN8 + mpt::osinfo::windows::Version::Win8 +#elif NTDDI_VERSION >= 0x06010000 // NTDDI_WIN7 + mpt::osinfo::windows::Version::Win7 +#elif NTDDI_VERSION >= 0x06000000 // NTDDI_VISTA + mpt::osinfo::windows::Version::WinVista +#elif NTDDI_VERSION >= 0x05020000 // NTDDI_WS03 + mpt::osinfo::windows::Version::WinXP64 +#elif NTDDI_VERSION >= NTDDI_WINXP + mpt::osinfo::windows::Version::WinXP +#elif NTDDI_VERSION >= NTDDI_WIN2K + mpt::osinfo::windows::Version::Win2000 +#else + mpt::osinfo::windows::Version::WinNT4 +#endif + ; + return mpt::osinfo::windows::Version(System, mpt::osinfo::windows::Version::ServicePack(((NTDDI_VERSION & 0xffffu) >> 8) & 0xffu, ((NTDDI_VERSION & 0xffffu) >> 0) & 0xffu), 0, 0); + } + + static mpt::osinfo::windows::Version::System SystemVersionFrom_WIN32_WINNT() noexcept { +#if defined(_WIN32_WINNT) + return mpt::osinfo::windows::Version::System((static_cast(_WIN32_WINNT) & 0xff00u) >> 8, (static_cast(_WIN32_WINNT) & 0x00ffu) >> 0); +#else + return mpt::osinfo::windows::Version::System(); +#endif + } + + static mpt::osinfo::windows::Version GatherWindowsVersion() noexcept { +#if MPT_OS_WINDOWS_WINRT + return VersionFromNTDDI_VERSION(); +#else // !MPT_OS_WINDOWS_WINRT + OSVERSIONINFOEXW versioninfoex{}; + versioninfoex.dwOSVersionInfoSize = sizeof(versioninfoex); +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4996) // 'GetVersionExW': was declared deprecated +#pragma warning(disable : 28159) // Consider using 'IsWindows*' instead of 'GetVersionExW'. Reason: Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers. +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif // MPT_COMPILER_CLANG + if (GetVersionExW((LPOSVERSIONINFOW)&versioninfoex) == FALSE) { + return VersionFromNTDDI_VERSION(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG + if (versioninfoex.dwPlatformId != VER_PLATFORM_WIN32_NT) { + return VersionFromNTDDI_VERSION(); + } + DWORD dwProductType = 0; +#if (_WIN32_WINNT >= 0x0600) // _WIN32_WINNT_VISTA + dwProductType = PRODUCT_UNDEFINED; + if (GetProductInfo(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion, versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor, &dwProductType) == FALSE) { + dwProductType = PRODUCT_UNDEFINED; + } +#endif + return mpt::osinfo::windows::Version( + mpt::osinfo::windows::Version::System(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion), + mpt::osinfo::windows::Version::ServicePack(versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor), + versioninfoex.dwBuildNumber, + dwProductType); +#endif // MPT_OS_WINDOWS_WINRT + } + +#endif // MPT_OS_WINDOWS + +public: + static mpt::osinfo::windows::Version Current() noexcept { +#if MPT_OS_WINDOWS + return GatherWindowsVersion(); +#else // !MPT_OS_WINDOWS + return mpt::osinfo::windows::Version::NoWindows(); +#endif // MPT_OS_WINDOWS + } + +public: + bool IsWindows() const noexcept { + return m_SystemIsWindows; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System < version; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_ServicePack < servicePack; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_Build < build; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + if (m_ServicePack > servicePack) { + return false; + } + if (m_ServicePack < servicePack) { + return true; + } + return m_Build < build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System >= version; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_ServicePack >= servicePack; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_Build >= build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + if (m_ServicePack < servicePack) { + return false; + } + if (m_ServicePack > servicePack) { + return true; + } + return m_Build >= build; + } + + mpt::osinfo::windows::Version::System GetSystem() const noexcept { + return m_System; + } + + mpt::osinfo::windows::Version::ServicePack GetServicePack() const noexcept { + return m_ServicePack; + } + + mpt::osinfo::windows::Version::Build GetBuild() const noexcept { + return m_Build; + } + + mpt::osinfo::windows::Version::TypeId GetTypeId() const noexcept { + return m_Type; + } + +}; // class Version + + + +} // namespace windows + +} // namespace osinfo + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OSINFO_WINDOWS_VERSION_HPP Property changes on: src/mpt/osinfo/windows_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/out_of_memory/out_of_memory.hpp =================================================================== --- src/mpt/out_of_memory/out_of_memory.hpp (nonexistent) +++ src/mpt/out_of_memory/out_of_memory.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP +#define MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#if !MPT_DETECTED_MFC +#include +#endif // !MPT_DETECTED_MFC + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Exception handling helpers, because MFC requires explicit deletion of the exception object, +// Thus, always call exactly one of mpt::rethrow_out_of_memory(e) or mpt::delete_out_of_memory(e). + +#if MPT_DETECTED_MFC + +using out_of_memory = CMemoryException *; + +[[noreturn]] inline void throw_out_of_memory() { + AfxThrowMemoryException(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory & e) { + if (e) { + e->Delete(); + e = nullptr; + } +} + +#else // !MPT_DETECTED_MFC + +using out_of_memory = const std::bad_alloc &; + +[[noreturn]] inline void throw_out_of_memory() { + throw std::bad_alloc(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); +} + +#endif // MPT_DETECTED_MFC + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP Property changes on: src/mpt/out_of_memory/out_of_memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/parse.hpp =================================================================== --- src/mpt/parse/parse.hpp (nonexistent) +++ src/mpt/parse/parse.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_PARSE_HPP +#define MPT_PARSE_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::string parse_as_internal_string_type(const std::string & s) { + return s; +} + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +inline std::wstring parse_as_internal_string_type(const std::wstring & s) { + return s; +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_USTRING_MODE_WIDE +template +inline std::wstring parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(s); +} +#else // !MPT_USTRING_MODE_WIDE +template +inline std::string parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(mpt::common_encoding::utf8, s); +} +#endif // MPT_USTRING_MODE_WIDE + + +template +inline T ConvertStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> value)) { + return T{}; + } + } + return value; +} + + +template +inline T ConvertHexStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> std::hex >> value)) { + return T{}; + } + } + return value; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_PARSE_HPP Property changes on: src/mpt/parse/parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/tests/tests_parse.hpp =================================================================== --- src/mpt/parse/tests/tests_parse.hpp (nonexistent) +++ src/mpt/parse/tests/tests_parse.hpp (working copy) @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_TESTS_PARSE_HPP +#define MPT_PARSE_TESTS_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace parse { + +MPT_TEST_GROUP_INLINE("mpt/parse") +{ + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("586"), 586u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("2147483647"), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("4294967295"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-9223372036854775808"), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-159"), -159); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("85059"), 85059u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), (uint64)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("18446744073709551615"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-87.0"), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-0.5e-6"), -0.5e-6); +#endif +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("58.65403492763"), 58.65403492763); +#else + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStrTo("58.65403492763"), 58.65403492763, 0.0001); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-87.0)), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-0.5e-6)), -0.5e-6); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo("fe"), 254); +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(L"fe"), 254); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(MPT_USTRING("ffff")), 65535u); +} + +} // namespace parse +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_TESTS_PARSE_HPP Property changes on: src/mpt/parse/tests/tests_parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/crand.hpp =================================================================== --- src/mpt/random/crand.hpp (nonexistent) +++ src/mpt/random/crand.hpp (working copy) @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_CRAND_HPP +#define MPT_RANDOM_CRAND_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/numeric.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class crand { +public: + using state_type = void; + using result_type = int; + +private: + static void reseed(uint32 seed) { + std::srand(seed); + } + +public: + template + static void reseed(Trd & rd) { + reseed(mpt::random(rd)); + } + +public: + crand() = default; + explicit crand(const std::string &) { + return; + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return 0; + } + static MPT_CONSTEXPRINLINE result_type max() { + return RAND_MAX; + } + static MPT_CONSTEXPRINLINE int result_bits() { + return mpt::lower_bound_entropy_bits(RAND_MAX); + } + result_type operator()() { + return std::rand(); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_CRAND_HPP Property changes on: src/mpt/random/crand.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/default_engines.hpp =================================================================== --- src/mpt/random/default_engines.hpp (nonexistent) +++ src/mpt/random/default_engines.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEFAULT_ENGINES_HPP +#define MPT_RANDOM_DEFAULT_ENGINES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using deterministic_fast_engine = mpt::lcg_msvc; +using deterministic_good_engine = mpt::lcg_musl; + +// We cannot use std::minstd_rand here because it has not a power-of-2 sized +// output domain which we rely upon. +using fast_engine = mpt::lcg_msvc; // about 3 ALU operations, ~32bit of state, suited for inner loops +using good_engine = std::ranlux48; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEFAULT_ENGINES_HPP Property changes on: src/mpt/random/default_engines.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/device.hpp =================================================================== --- src/mpt/random/device.hpp (nonexistent) +++ src/mpt/random/device.hpp (working copy) @@ -0,0 +1,303 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEVICE_HPP +#define MPT_RANDOM_DEVICE_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/mutex/mutex.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" +#include "mpt/random/random.hpp" + +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr uint32 DETERMINISTIC_RNG_SEED = 3141592653u; // pi + + + +template +struct default_radom_seed_hash { +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc32c; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc64_jones; +}; + + +class prng_random_device_time_seeder { + +public: + template + inline T generate_seed() { + // Note: CRC is actually not that good a choice here, but it is simple and we + // already have an implementaion available. Better choices for mixing entropy + // would be a hash function with proper avalanche characteristics or a block + // or stream cipher with any pre-choosen random key and IV. The only aspect we + // really need here is whitening of the bits. + typename mpt::default_radom_seed_hash::type hash; + + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#if !defined(MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK) + // Avoid std::chrono::high_resolution_clock on Emscripten because availability is problematic in AudioWorklet context. + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::high_resolution_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#endif // !MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK + + return static_cast(hash.result()); + } + +public: + prng_random_device_time_seeder() = default; +}; + + +// C++11 std::random_device may be implemented as a deterministic PRNG. +// There is no way to seed this PRNG and it is allowed to be seeded with the +// same value on each program invocation. This makes std::random_device +// completely useless even as a non-cryptographic entropy pool. +// We fallback to time-seeded std::mt19937 if std::random_device::entropy() is +// 0 or less. +class sane_random_device { +private: + mpt::mutex m; + std::string token; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + std::unique_ptr prd; + bool rd_reliable{false}; +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + std::unique_ptr rd_fallback; + +public: + using result_type = unsigned int; + +private: + void init_fallback() { + if (!rd_fallback) { + if (token.length() > 0) { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + std::vector seeds; + seeds.push_back(static_cast(seed_val >> 32)); + seeds.push_back(static_cast(seed_val >> 0)); + for (std::size_t i = 0; i < token.length(); ++i) { + seeds.push_back(static_cast(static_cast(token[i]))); + } + std::seed_seq seed(seeds.begin(), seeds.end()); + rd_fallback = std::make_unique(seed); + } else { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + unsigned int seeds[2]; + seeds[0] = static_cast(seed_val >> 32); + seeds[1] = static_cast(seed_val >> 0); + std::seed_seq seed(seeds + 0, seeds + 2); + rd_fallback = std::make_unique(seed); + } + } + } + +public: + sane_random_device() { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + sane_random_device(const std::string & token_) + : token(token_) { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(token); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(result_type) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + result_type result = 0; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + if (prd) { + try { + if constexpr (std::random_device::min() != 0 || !mpt::is_mask(std::random_device::max())) { + // insane std::random_device + // This implementation is not exactly uniformly distributed but good enough + // for OpenMPT. + constexpr double rd_min = static_cast(std::random_device::min()); + constexpr double rd_max = static_cast(std::random_device::max()); + constexpr double rd_range = rd_max - rd_min; + constexpr double rd_size = rd_range + 1.0; + const double rd_entropy = std::log2(rd_size); + const int iterations = static_cast(std::ceil(result_bits() / rd_entropy)); + double tmp = 0.0; + for (int i = 0; i < iterations; ++i) { + tmp = (tmp * rd_size) + (static_cast((*prd)()) - rd_min); + } + double result_01 = std::floor(tmp / std::pow(rd_size, iterations)); + result = static_cast(std::floor(result_01 * (static_cast(max() - min()) + 1.0))) + min(); + } else { + // sane std::random_device + result = 0; + std::size_t rd_bits = mpt::lower_bound_entropy_bits(std::random_device::max()); + for (std::size_t entropy = 0; entropy < (sizeof(result_type) * 8); entropy += rd_bits) { + if (rd_bits < (sizeof(result_type) * 8)) { + result = (result << rd_bits) | static_cast((*prd)()); + } else { + result = result | static_cast((*prd)()); + } + } + } + } catch (const std::exception &) { + rd_reliable = false; + init_fallback(); + } + } else { + rd_reliable = false; + } + if (!rd_reliable) { + // std::random_device is unreliable + // XOR the generated random number with more entropy from the time-seeded + // PRNG. + // Note: This is safe even if the std::random_device itself is implemented + // as a std::mt19937 PRNG because we are very likely using a different + // seed. + result ^= mpt::random(*rd_fallback); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + result ^= mpt::random(*rd_fallback); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + return result; + } +}; + + +class prng_random_device_deterministic_seeder { +protected: + template + constexpr T generate_seed() noexcept { + return static_cast(mpt::DETERMINISTIC_RNG_SEED); + } + +protected: + prng_random_device_deterministic_seeder() = default; +}; + +template +class prng_random_device + : private seeder { +public: + using result_type = unsigned int; + +private: + mpt::mutex m; + Trng rng; + +public: + prng_random_device() + : rng(seeder::template generate_seed()) { + return; + } + prng_random_device(const std::string &) + : rng(seeder::template generate_seed()) { + return; + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(unsigned int) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + return mpt::random(rng); + } +}; + + +using deterministc_random_device = mpt::prng_random_device; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEVICE_HPP Property changes on: src/mpt/random/device.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine.hpp =================================================================== --- src/mpt/random/engine.hpp (nonexistent) +++ src/mpt/random/engine.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_HPP +#define MPT_RANDOM_ENGINE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/seed.hpp" + +#include +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct engine_traits { + typedef typename Trng::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return Trng::result_bits(); + } + template + static inline Trng make(Trd & rd) { + return Trng(rd); + } +}; + +// C++11 random does not provide any sane way to determine the amount of entropy +// required to seed a particular engine. VERY STUPID. +// List the ones we are likely to use. + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937::result_type) * 8 * std::mt19937::state_size + }; + typedef std::mt19937 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937_64::result_type) * 8 * std::mt19937_64::state_size + }; + typedef std::mt19937_64 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux24_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux48_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + + + +template +inline Trng make_prng(Trd & rd) { + return mpt::engine_traits::make(rd); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_HPP Property changes on: src/mpt/random/engine.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine_lcg.hpp =================================================================== --- src/mpt/random/engine_lcg.hpp (nonexistent) +++ src/mpt/random/engine_lcg.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_LCG_HPP +#define MPT_RANDOM_ENGINE_LCG_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4724) // potential mod by 0 +#endif // MPT_COMPILER_MSVC + +template +class lcg_engine { +public: + typedef Tstate state_type; + typedef Tvalue result_type; + +private: + state_type state; + +public: + template + explicit inline lcg_engine(Trng & rd) + : state(mpt::random(rd)) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + explicit inline lcg_engine(state_type seed) + : state(seed) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return static_cast(0); + } + static MPT_CONSTEXPRINLINE result_type max() { + static_assert(((result_mask >> result_shift) << result_shift) == result_mask); + return static_cast(result_mask >> result_shift); + } + static MPT_CONSTEXPRINLINE int result_bits() { + static_assert(((static_cast(1) << result_bits_) - 1) == (result_mask >> result_shift)); + return result_bits_; + } + inline result_type operator()() { + // we return results from the current state and update state after returning. results in better pipelining. + state_type s = state; + result_type result = static_cast((s & result_mask) >> result_shift); + s = mpt::modulo_if_not_zero((a * s) + c); + state = s; + return result; + } +}; + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + +typedef lcg_engine lcg_msvc; +typedef lcg_engine lcg_c99; +typedef lcg_engine lcg_musl; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_LCG_HPP Property changes on: src/mpt/random/engine_lcg.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/random.hpp =================================================================== --- src/mpt/random/random.hpp (nonexistent) +++ src/mpt/random/random.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_RANDOM_HPP +#define MPT_RANDOM_RANDOM_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < (sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + return static_cast(result); +} + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if constexpr (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +inline T random(Trng & rng, std::size_t required_entropy_bits) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +struct uniform_real_distribution { +private: + T a; + T b; + +public: + inline uniform_real_distribution(T a_, T b_) + : a(a_) + , b(b_) { + return; + } + template + inline T operator()(Trng & rng) const { + const int mantissa_bits = std::numeric_limits::digits; + return ((b - a) * static_cast(mpt::random(rng)) / static_cast((static_cast(1u) << mantissa_bits))) + a; + } +}; + + +template +inline T random(Trng & rng, T min, T max) { + static_assert(!std::numeric_limits::is_integer); + typedef mpt::uniform_real_distribution dis_type; + dis_type dis(min, max); + return static_cast(dis(rng)); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_RANDOM_HPP Property changes on: src/mpt/random/random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/seed.hpp =================================================================== --- src/mpt/random/seed.hpp (nonexistent) +++ src/mpt/random/seed.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_SEED_HPP +#define MPT_RANDOM_SEED_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class seed_seq_values { +private: + std::array seeds; + +public: + template + explicit seed_seq_values(Trd & rd) { + for (std::size_t i = 0; i < N; ++i) { + seeds[i] = rd(); + } + } + const unsigned int * begin() const { + return seeds.data(); + } + const unsigned int * end() const { + return seeds.data() + N; + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_SEED_HPP Property changes on: src/mpt/random/seed.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/tests/tests_random.hpp =================================================================== --- src/mpt/random/tests/tests_random.hpp (nonexistent) +++ src/mpt/random/tests/tests_random.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_RANDOM_HPP +#define MPT_BASE_TESTS_RANDOM_HPP + + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/random/random.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace random { + +MPT_TEST_GROUP_INLINE("mpt/random") +{ + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + + bool failed = false; + + for (std::size_t i = 0; i < 10000; ++i) { + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 1u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0u, 1u); + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 1); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0, 1); + + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0f, 1.0f), 0.0f, 1.0f); + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0, 1.0), 0.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 1.0), -1.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 0.0), -1.0, 0.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 2.0), 1.0, 2.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 3.0), 1.0, 3.0); + } + + MPT_TEST_EXPECT_EXPR(!failed); +} + +} // namespace random +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_RANDOM_HPP Property changes on: src/mpt/random/tests/tests_random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/buffer.hpp =================================================================== --- src/mpt/string/buffer.hpp (nonexistent) +++ src/mpt/string/buffer.hpp (working copy) @@ -0,0 +1,344 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_BUFFER_HPP +#define MPT_STRING_BUFFER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include +#include +#include + +#include +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + + +template +class StringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, buf + len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } + StringBufRefImpl & operator=(const Tstring & str) { + std::copy(str.data(), str.data() + std::min(str.length(), size - 1), buf); + std::fill(buf + std::min(str.length(), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class StringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } +}; + + + +template +inline StringBufRefImpl::type> ReadTypedBuf(const std::array & buf) { + return StringBufRefImpl::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(std::array & buf) { + return StringBufRefImpl(buf.data(), size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar (&buf)[size]) { + return StringBufRefImpl(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl(buf, size); +} + + + +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const std::array & buf) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(std::array & buf) { + return StringBufRefImpl::type>, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} + + + +#if MPT_OS_WINDOWS + +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const std::array & buf) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(std::array & buf) { + return StringBufRefImpl::type>::string_type, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_DETECTED_MFC + +template +class CStringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } + CStringBufRefImpl & operator=(const CString & str) { + std::copy(str.GetString(), str.GetString() + std::min(static_cast(str.GetLength()), size - 1), buf); + std::fill(buf + std::min(static_cast(str.GetLength()), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class CStringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } +}; + +template +inline CStringBufRefImpl::type> ReadCStringBuf(const std::array & buf) { + return CStringBufRefImpl::type>(buf.data(), size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar (&buf)[size]) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar * buf, std::size_t size) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(std::array & buf) { + return CStringBufRefImpl(buf.data(), size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar (&buf)[size]) { + return CStringBufRefImpl(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar * buf, std::size_t size) { + return CStringBufRefImpl(buf, size); +} + +#endif // MPT_DETECTED_MFC + + + +template +struct charbuf { +public: + using Tchar = char; + using char_type = Tchar; + using string_type = std::basic_string; + using string_view_type = std::basic_string_view; + constexpr std::size_t static_length() const { + return len; + } + +public: + Tchar buf[len]; + +public: + charbuf() { + std::fill(std::begin(buf), std::end(buf), Tchar('\0')); + } + charbuf(const charbuf &) = default; + charbuf(charbuf &&) = default; + charbuf & operator=(const charbuf &) = default; + charbuf & operator=(charbuf &&) = default; + const Tchar & operator[](std::size_t i) const { + return buf[i]; + } + std::string str() const { + return static_cast(*this); + } + operator string_type() const { + return mpt::ReadAutoBuf(buf); + } + explicit operator string_view_type() const { + return static_cast(mpt::ReadAutoBuf(buf)); + } + bool empty() const { + return mpt::ReadAutoBuf(buf).empty(); + } + charbuf & operator=(const string_type & str) { + mpt::WriteAutoBuf(buf) = str; + return *this; + } + +public: + friend bool operator!=(const charbuf & a, const charbuf & b) { + return static_cast(a) != static_cast(b); + } + friend bool operator!=(const std::string & a, const charbuf & b) { + return a != static_cast(b); + } + friend bool operator!=(const charbuf & a, const std::string & b) { + return static_cast(a) != b; + } + friend bool operator==(const charbuf & a, const charbuf & b) { + return static_cast(a) == static_cast(b); + } + friend bool operator==(const std::string & a, const charbuf & b) { + return a == static_cast(b); + } + friend bool operator==(const charbuf & a, const std::string & b) { + return static_cast(a) == b; + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_BUFFER_HPP Property changes on: src/mpt/string/buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_buffer.hpp =================================================================== --- src/mpt/string/tests/tests_string_buffer.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_buffer.hpp (working copy) @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_BUFFER_HPP +#define MPT_STRING_TESTS_STRING_BUFFER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/buffer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace buffer { + +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +{ + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteAutoBuf(buf) = std::string("foobar"); + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + char foobar[] = {'f', 'o', 'o', 'b', 'a', 'r', '\0'}; + mpt::WriteTypedBuf(buf) = (char *)foobar; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = (const char *)"foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = "foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + const char buf[4] = {'f', 'o', 'o', 'b'}; + std::string foo = mpt::ReadAutoBuf(buf); + MPT_TEST_EXPECT_EQUAL(foo, std::string("foob")); + } +} + +} // namespace buffer +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_BUFFER_HPP Property changes on: src/mpt/string/tests/tests_string_buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_utility.hpp =================================================================== --- src/mpt/string/tests/tests_string_utility.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_utility.hpp (working copy) @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_UTILITY_HPP +#define MPT_STRING_TESTS_STRING_UTILITY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace utility { + +MPT_TEST_GROUP_INLINE("mpt/string/utility") +{ + MPT_TEST_EXPECT_EQUAL(mpt::trim_left(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string(" ")), ""); + + // weird things with std::string containing \0 in the middle and trimming \0 + MPT_TEST_EXPECT_EQUAL(std::string("\0\ta\0b ", 6).length(), (std::size_t)6); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string("\0\ta\0b ", 6)), std::string("\0\ta\0b", 5)); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string("\0\ta\0b\0", 6), std::string("\0", 1)), std::string("\ta\0b", 4)); +} + +} // namespace utility +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_UTILITY_HPP Property changes on: src/mpt/string/tests/tests_string_utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/types.hpp =================================================================== --- src/mpt/string/types.hpp (nonexistent) +++ src/mpt/string/types.hpp (working copy) @@ -0,0 +1,407 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TYPES_HPP +#define MPT_STRING_TYPES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +enum class common_encoding +{ + utf8, + ascii, // strictly 7-bit ASCII + iso8859_1, + iso8859_15, + cp850, + cp437, + windows1252, +}; + + +enum class logical_encoding +{ + locale, // CP_ACP on windows, system configured C locale otherwise + active_locale, // active C/C++ global locale +}; + +// source code / preprocessor (i.e. # token) +inline constexpr auto source_encoding = common_encoding::ascii; + +// debug log files +inline constexpr auto logfile_encoding = common_encoding::utf8; + +// std::clog / std::cout / std::cerr +inline constexpr auto stdio_encoding = logical_encoding::locale; + +// getenv +inline constexpr auto environment_encoding = logical_encoding::locale; + +// std::exception::what() +inline constexpr auto exception_encoding = logical_encoding::active_locale; + + + + + +template +struct is_character : public std::false_type { }; + +template <> +struct is_character : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_character : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_character : public std::true_type { }; +#endif // C++20 +template <> +struct is_character : public std::true_type { }; +template <> +struct is_character : public std::true_type { }; + + + + + +template +MPT_CONSTEXPRINLINE unsigned char char_value(T x) noexcept = delete; + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char x) noexcept { + return static_cast(x); +} + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(unsigned char x) noexcept { + return static_cast(x); +} + +#if MPT_CXX_AT_LEAST(20) +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char8_t x) noexcept { + return static_cast(x); +} +#endif // C++20 + + + + + +template +struct unsafe_char_converter { }; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(wchar_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr wchar_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char8_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char8_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // C++20 + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char16_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char16_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char32_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template +constexpr Tdstchar unsafe_char_convert(Tsrcchar src) noexcept { + return mpt::unsafe_char_converter::encode(mpt::unsafe_char_converter::decode(src)); +} + + + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +using widestring = std::wstring; +using widechar = wchar_t; +#define MPT_WIDECHAR(x) L##x +#define MPT_WIDELITERAL(x) L##x +#define MPT_WIDESTRING(x) std::wstring(L##x) +#else // MPT_COMPILER_QUIRK_NO_WCHAR +using widestring = std::u32string; +using widechar = char32_t; +#define MPT_WIDECHAR(x) U##x +#define MPT_WIDELITERAL(x) U##x +#define MPT_WIDESTRING(x) std::u32string(U##x) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +template +struct common_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return common_encoding_tag; + } +}; + +template +struct logical_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return logical_encoding_tag; + } +}; + + + +using lstring = std::basic_string>; + +using source_string = std::basic_string>; +using exception_string = std::basic_string>; + +#if MPT_OS_WINDOWS + +template +struct windows_char_traits { }; +template <> +struct windows_char_traits { using string_type = mpt::lstring; }; +template <> +struct windows_char_traits { using string_type = std::wstring; }; + +using tstring = windows_char_traits::string_type; + +using winstring = mpt::tstring; + +#endif // MPT_OS_WINDOWS + + + +#if MPT_CXX_AT_LEAST(20) + +using u8string = std::u8string; +using u8char = char8_t; +#define MPT_U8CHAR(x) u8##x +#define MPT_U8LITERAL(x) u8##x +#define MPT_U8STRING(x) std::u8string(u8##x) + +#else // !C++20 + +using u8string = std::basic_string>; +using u8char = char; +#define MPT_U8CHAR(x) x +#define MPT_U8LITERAL(x) x +#define MPT_U8STRING(x) mpt::u8string(x) + +// mpt::u8string is a moderately type-safe string that is meant to contain +// UTF-8 encoded char bytes. +// +// mpt::u8string is not implicitely convertible to/from std::string, but +// it is convertible to/from C strings the same way as std::string is. +// +// The implementation of mpt::u8string is a compromise of compatibilty +// with implementation-defined STL details, efficiency, source code size, +// executable bloat, type-safety and simplicity. +// +// mpt::u8string is not meant to be used directly though. +// mpt::u8string is meant as an alternative implementaion to std::wstring +// for implementing the unicode string type mpt::ustring. + +#endif // C++20 + + + +#if !defined(MPT_USTRING_MODE_UTF8_FORCE) && (MPT_COMPILER_MSVC || (MPT_DETECTED_MFC && defined(UNICODE))) +// Use wide strings for MSVC because this is the native encoding on +// microsoft platforms. +#define MPT_USTRING_MODE_WIDE 1 +#define MPT_USTRING_MODE_UTF8 0 +#else +#define MPT_USTRING_MODE_WIDE 0 +#define MPT_USTRING_MODE_UTF8 1 +#endif + +// mpt::ustring +// +// mpt::ustring is a string type that can hold unicode strings. +// It is implemented as a std::basic_string either based on wchar_t (i.e. the +// same as std::wstring) or a custom-defined char_traits class that is derived +// from std::char_traits. +// The selection of the underlying implementation is done at compile-time. +// MPT_UCHAR, MPT_ULITERAL and MPT_USTRING are macros that ease construction +// of ustring char literals, ustring char array literals and ustring objects +// from ustring char literals that work consistently in both modes. +// Note that these are not supported for non-ASCII characters appearing in +// the macro argument. +// Also note that, as both UTF8 and UTF16 (it is less of an issue for UTF32) +// are variable-length encodings and mpt::ustring is implemented as a +// std::basic_string, all member functions that require individual character +// access will not work consistently or even at all in a meaningful way. +// This in particular affects operator[], find() and substr(). +// The code makes no effort in preventing these or generating warnings when +// these are used on mpt::ustring objects. However, compiling in the +// respectively other mpt::ustring mode will catch most of these anyway. + +#if MPT_USTRING_MODE_WIDE +#if MPT_USTRING_MODE_UTF8 +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = std::wstring; +using uchar = wchar_t; +#define MPT_UCHAR(x) L##x +#define MPT_ULITERAL(x) L##x +#define MPT_USTRING(x) std::wstring(L##x) + +#endif // MPT_USTRING_MODE_WIDE + +#if MPT_USTRING_MODE_UTF8 +#if MPT_USTRING_MODE_WIDE +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = mpt::u8string; +using uchar = mpt::u8char; +#define MPT_UCHAR(x) MPT_U8CHAR(x) +#define MPT_ULITERAL(x) MPT_U8LITERAL(x) +#define MPT_USTRING(x) MPT_U8STRING(x) + +#endif // MPT_USTRING_MODE_UTF8 + + + +template +struct make_string_type { }; + +template +struct make_string_type> { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = typename make_string_type::type; +}; + +#if MPT_DETECTED_MFC + +template <> +struct make_string_type { + using type = CStringW; +}; + +template <> +struct make_string_type { + using type = CStringA; +}; + +#endif // MPT_DETECTED_MFC + + + +template +struct is_string_type : public std::false_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_string_type : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_string_type : public std::true_type { }; +#endif // C++20 +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if MPT_DETECTED_MFC +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#endif // MPT_DETECTED_MFC +template +struct is_string_type> : public std::true_type { }; + + + +template +inline typename mpt::make_string_type::type as_string(const T & str) { + if constexpr (std::is_pointer::type>::value) { + return str ? typename mpt::make_string_type::type{str} : typename mpt::make_string_type::type{}; + } else { + return str; + } +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TYPES_HPP Property changes on: src/mpt/string/types.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/utility.hpp =================================================================== --- src/mpt/string/utility.hpp (nonexistent) +++ src/mpt/string/utility.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_UTILITY_HPP +#define MPT_STRING_UTILITY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// string_traits abstract the API of underlying string classes, in particular they allow adopting to CString without having to specialize for CString explicitly + +template +struct string_traits { + + using string_type = Tstring; + using size_type = typename string_type::size_type; + using char_type = typename string_type::value_type; + + static inline std::size_t length(const string_type & str) { + return str.length(); + } + + static inline void reserve(string_type & str, std::size_t size) { + str.reserve(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + return str.append(a); + } + static inline string_type & append(string_type & str, string_type && a) { + return str.append(std::move(a)); + } + static inline string_type & append(string_type & str, std::size_t count, char_type c) { + return str.append(count, c); + } + + static inline string_type pad(string_type str, std::size_t left, std::size_t right) { + str.insert(str.begin(), left, char_type(' ')); + str.insert(str.end(), right, char_type(' ')); + return str; + } +}; + +#if MPT_DETECTED_MFC + +template <> +struct string_traits { + + using string_type = CStringA; + using size_type = int; + using char_type = typename CStringA::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +template <> +struct string_traits { + + using string_type = CStringW; + using size_type = int; + using char_type = typename CStringW::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +#endif // MPT_DETECTED_MFC + + +template +struct char_constants { + static inline constexpr Tchar space = ' '; + static inline constexpr Tchar a = 'a'; + static inline constexpr Tchar z = 'z'; + static inline constexpr Tchar A = 'A'; + static inline constexpr Tchar Z = 'Z'; + static inline constexpr Tchar lf = '\n'; + static inline constexpr Tchar cr = '\r'; + static inline constexpr Tchar tab = '\t'; + static inline constexpr Tchar comma = ','; +}; + +template <> +struct char_constants { + static inline constexpr char space = ' '; + static inline constexpr char a = 'a'; + static inline constexpr char z = 'z'; + static inline constexpr char A = 'A'; + static inline constexpr char Z = 'Z'; + static inline constexpr char lf = '\n'; + static inline constexpr char cr = '\r'; + static inline constexpr char tab = '\t'; + static inline constexpr char comma = ','; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct char_constants { + static inline constexpr wchar_t space = L' '; + static inline constexpr wchar_t a = L'a'; + static inline constexpr wchar_t z = L'z'; + static inline constexpr wchar_t A = L'A'; + static inline constexpr wchar_t Z = L'Z'; + static inline constexpr wchar_t lf = L'\n'; + static inline constexpr wchar_t cr = L'\r'; + static inline constexpr wchar_t tab = L'\t'; + static inline constexpr wchar_t comma = L','; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct char_constants { + static inline constexpr char8_t space = u8' '; + static inline constexpr char8_t a = u8'a'; + static inline constexpr char8_t z = u8'z'; + static inline constexpr char8_t A = u8'A'; + static inline constexpr char8_t Z = u8'Z'; + static inline constexpr char8_t lf = u8'\n'; + static inline constexpr char8_t cr = u8'\r'; + static inline constexpr char8_t tab = u8'\t'; + static inline constexpr char8_t comma = u8','; +}; +#endif + +template <> +struct char_constants { + static inline constexpr char16_t space = u' '; + static inline constexpr char16_t a = u'a'; + static inline constexpr char16_t z = u'z'; + static inline constexpr char16_t A = u'A'; + static inline constexpr char16_t Z = u'Z'; + static inline constexpr char16_t lf = u'\n'; + static inline constexpr char16_t cr = u'\r'; + static inline constexpr char16_t tab = u'\t'; + static inline constexpr char16_t comma = u','; +}; + +template <> +struct char_constants { + static inline constexpr char32_t space = U' '; + static inline constexpr char32_t a = U'a'; + static inline constexpr char32_t z = U'z'; + static inline constexpr char32_t A = U'A'; + static inline constexpr char32_t Z = U'Z'; + static inline constexpr char32_t lf = U'\n'; + static inline constexpr char32_t cr = U'\r'; + static inline constexpr char32_t tab = U'\t'; + static inline constexpr char32_t comma = U','; +}; + + +template +inline Tstring default_whitespace() { + Tstring result; + result.reserve(4); + result.push_back(char_constants::space); + result.push_back(char_constants::lf); + result.push_back(char_constants::cr); + result.push_back(char_constants::tab); + return result; +} + + +// Remove whitespace at start of string +template +inline Tstring trim_left(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_first_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin(), str.begin() + pos); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_last_of(whitespace) == str.length() - 1) { + return Tstring(); + } + return str; +} + +// Remove whitespace at end of string +template +inline Tstring trim_right(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_last_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin() + pos + 1, str.end()); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_first_of(whitespace) == 0) { + return Tstring(); + } + return str; +} + +// Remove whitespace at start and end of string +template +inline Tstring trim(Tstring str, const Tstring & whitespace = default_whitespace()) { + return trim_right(trim_left(str, whitespace), whitespace); +} + + +template +inline bool starts_with(const Tstring & str, const Tmatch & match) { + return (str.find(typename mpt::make_string_type::type{match}) == 0); +} + +template +inline bool ends_with(const Tstring & str, const Tmatch & match) { + return (str.rfind(typename mpt::make_string_type::type{match}) == (str.length() - typename mpt::make_string_type::type{match}.length())); +} + + +template +inline constexpr Tchar to_lower_ascii(Tchar c) noexcept { + if (char_constants::A <= c && c <= char_constants::Z) { + c += char_constants::a - char_constants::A; + } + return c; +} + +template +inline constexpr Tchar to_upper_ascii(Tchar c) noexcept { + if (char_constants::a <= c && c <= char_constants::z) { + c -= char_constants::a - char_constants::A; + } + return c; +} + + + +template +inline std::vector split(const Tstring & str, const Tstring & sep = Tstring(1, char_constants::comma)) { + std::vector vals; + std::size_t pos = 0; + while (str.find(sep, pos) != std::string::npos) { + vals.push_back(str.substr(pos, str.find(sep, pos) - pos)); + pos = str.find(sep, pos) + sep.length(); + } + if (!vals.empty() || (str.substr(pos).length() > 0)) { + vals.push_back(str.substr(pos)); + } + return vals; +} + + + +template +inline Tstring combine(const std::vector & vals, const Tstring & sep = Tstring(1, char_constants::comma)) { + Tstring str; + for (std::size_t i = 0; i < vals.size(); ++i) { + if (i > 0) { + str += sep; + } + str += vals[i]; + } + return str; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_UTILITY_HPP Property changes on: src/mpt/string/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/convert.hpp =================================================================== --- src/mpt/string_convert/convert.hpp (nonexistent) +++ src/mpt/string_convert/convert.hpp (working copy) @@ -0,0 +1,1131 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_CONVERT_HPP +#define MPT_STRING_CONVERT_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +/* +default 1:1 mapping +inline constexpr char32_t CharsetTableISO8859_1[256] = { + 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, + 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, + 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, + 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, + 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, + 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, + 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, + 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, + 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, + 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, + 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, + 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, + 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, + 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, + 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, + 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff +}; +*/ + +inline constexpr char32_t CharsetTableISO8859_15[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableWindows1252[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f, + 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableCP850[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00F8, 0x00a3, 0x00D8, 0x00D7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00AE, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00E3, 0x00C3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250c, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00df, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00b5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00b1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00f7, 0x00B8, 0x00b0, 0x00A8, 0x00b7, 0x00B9, 0x00B3, 0x00b2, 0x25a0, 0x00a0}; + +inline constexpr char32_t CharsetTableCP437[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0}; + +template +inline mpt::widestring decode_8bit(const Tsrcstring & str, const char32_t (&table)[256], mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + std::size_t c = static_cast(mpt::char_value(str[i])); + if (c < std::size(table)) { + res.push_back(static_cast(table[c])); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_8bit(const mpt::widestring & str, const char32_t (&table)[256], char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + bool found = false; + // Try non-control characters first. + // In cases where there are actual characters mirrored in this range (like in AMS/AMS2 character sets), + // characters in the common range are preferred this way. + for (std::size_t x = 0x20; x < std::size(table); ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + if (!found) { + // try control characters + for (std::size_t x = 0x00; x < std::size(table) && x < 0x20; ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + } + if (!found) { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_ascii(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_ascii(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_iso8859_1(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + MPT_UNUSED(replacement); + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + res.push_back(static_cast(static_cast(c))); + } + return res; +} + +template +inline Tdststring encode_iso8859_1(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0xff) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + + + +template +inline mpt::widestring decode_utf8(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + const Tsrcstring & in = str; + mpt::widestring out; + // state: + std::size_t charsleft = 0; + char32_t ucs4 = 0; + for (uint8 c : in) { + if (charsleft == 0) { + if ((c & 0x80) == 0x00) { + out.push_back(static_cast(c)); + } else if ((c & 0xE0) == 0xC0) { + ucs4 = c & 0x1F; + charsleft = 1; + } else if ((c & 0xF0) == 0xE0) { + ucs4 = c & 0x0F; + charsleft = 2; + } else if ((c & 0xF8) == 0xF0) { + ucs4 = c & 0x07; + charsleft = 3; + } else { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + } else { + if ((c & 0xC0) != 0x80) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + ucs4 <<= 6; + ucs4 |= c & 0x3F; + charsleft--; + if (charsleft == 0) { + if constexpr (sizeof(mpt::widechar) == 2) { + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(ucs4)); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(hi_sur); + out.push_back(lo_sur); + } + } else { + out.push_back(static_cast(ucs4)); + } + ucs4 = 0; + } + } + } + if (charsleft != 0) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + return out; +} + +template +inline Tdststring encode_utf8(const mpt::widestring & str, char replacement = '?') { + const mpt::widestring & in = str; + Tdststring out; + for (std::size_t i = 0; i < in.length(); i++) { + mpt::widechar wc = in[i]; + char32_t ucs4 = 0; + if constexpr (sizeof(mpt::widechar) == 2) { + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + } else { + ucs4 = static_cast(wc); + } + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + continue; + } + uint8 utf8[6]; + std::size_t numchars = 0; + for (numchars = 0; numchars < 6; numchars++) { + utf8[numchars] = ucs4 & 0x3F; + ucs4 >>= 6; + if (ucs4 == 0) { + break; + } + } + numchars++; + if (numchars == 1) { + out.push_back(utf8[0]); + continue; + } + if (numchars == 2 && utf8[numchars - 1] == 0x01) { + // generate shortest form + out.push_back(utf8[0] | 0x40); + continue; + } + std::size_t charsleft = numchars; + while (charsleft > 0) { + if (charsleft == numchars) { + out.push_back(utf8[charsleft - 1] | (((1 << numchars) - 1) << (8 - numchars))); + } else { + // cppcheck false-positive + // cppcheck-suppress arrayIndexOutOfBounds + out.push_back(utf8[charsleft - 1] | 0x80); + } + charsleft--; + } + } + return out; +} + + + +template +inline Tdststring utf32_from_utf16(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 2); + static_assert(sizeof(typename Tdststring::value_type) == 4); + MPT_UNUSED(replacement); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char16_t wc = static_cast(static_cast(in[i])); + char32_t ucs4 = 0; + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + out.push_back(static_cast(static_cast(ucs4))); + } + return out; +} + +template +inline Tdststring utf16_from_utf32(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 4); + static_assert(sizeof(typename Tdststring::value_type) == 2); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char32_t ucs4 = static_cast(static_cast(in[i])); + if (ucs4 > 0x1fffff) { + out.push_back(static_cast(static_cast(replacement))); + ucs4 = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(static_cast(ucs4))); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(static_cast(hi_sur)); + out.push_back(static_cast(lo_sur)); + } + } + return out; +} + + + +#if MPT_OS_WINDOWS + +inline bool has_codepage(UINT cp) { + return IsValidCodePage(cp) ? true : false; +} + +inline bool windows_has_encoding(common_encoding encoding) { + bool result = false; + switch (encoding) { + case common_encoding::utf8: + result = has_codepage(CP_UTF8); + break; + case common_encoding::ascii: + result = has_codepage(20127); + break; + case common_encoding::iso8859_1: + result = has_codepage(28591); + break; + case common_encoding::iso8859_15: + result = has_codepage(28605); + break; + case common_encoding::cp850: + result = has_codepage(850); + break; + case common_encoding::cp437: + result = has_codepage(437); + break; + case common_encoding::windows1252: + result = has_codepage(1252); + break; + } + return result; +} + +inline bool windows_has_encoding(logical_encoding encoding) { + bool result = false; + switch (encoding) { + case logical_encoding::locale: + result = true; + break; + case logical_encoding::active_locale: + result = false; + break; + } + return result; +} + +inline UINT codepage_from_encoding(logical_encoding encoding) { + UINT result = 0; + switch (encoding) { + case logical_encoding::locale: + result = CP_ACP; + break; + case logical_encoding::active_locale: + result = 0; + break; + } + return result; +} + +inline UINT codepage_from_encoding(common_encoding encoding) { + UINT result = 0; + switch (encoding) { + case common_encoding::utf8: + result = CP_UTF8; + break; + case common_encoding::ascii: + result = 20127; + break; + case common_encoding::iso8859_1: + result = 28591; + break; + case common_encoding::iso8859_15: + result = 28605; + break; + case common_encoding::cp850: + result = 850; + break; + case common_encoding::cp437: + result = 437; + break; + case common_encoding::windows1252: + result = 1252; + break; + } + return result; +} + +template +inline Tdststring encode_codepage(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + Tdststring encoded_string; + int required_size = WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), nullptr, 0, nullptr, nullptr); + if (required_size > 0) { + encoded_string.resize(required_size); + WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), reinterpret_cast(encoded_string.data()), required_size, nullptr, nullptr); + } + return encoded_string; +} + +template +inline mpt::widestring decode_codepage(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + mpt::widestring decoded_string; + int required_size = MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), nullptr, 0); + if (required_size > 0) { + decoded_string.resize(required_size); + MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), decoded_string.data(), required_size); + } + return decoded_string; +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_OS_DJGPP + +inline common_encoding djgpp_get_locale_encoding() { + uint16 active_codepage = 437; + uint16 system_codepage = 437; + __dpmi_regs regs; + std::memset(®s, 0, sizeof(__dpmi_regs)); + regs.x.ax = 0x6601; + if (__dpmi_int(0x21, ®s) == 0) { + int cf = (regs.x.flags >> 0) & 1; + if (cf == 0) { + active_codepage = regs.x.bx; + system_codepage = regs.x.dx; + } + } + common_encoding result = common_encoding::cp437; + if (active_codepage == 0) { + result = common_encoding::cp437; + } else if (active_codepage == 437) { + result = common_encoding::cp437; + } else if (active_codepage == 850) { + result = common_encoding::cp850; + } else if (system_codepage == 437) { + result = common_encoding::cp437; + } else if (system_codepage == 850) { + result = common_encoding::cp850; + } else { + result = common_encoding::cp437; + } + return result; +} + +#endif // MPT_OS_DJGPP + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + +// Note: +// +// std::codecvt::out in LLVM libc++ does not advance in and out pointers when +// running into a non-convertible character. This can happen when no locale is +// set on FreeBSD or MacOSX. This behaviour violates the C++ standard. +// +// We apply the following (albeit costly, even on other platforms) work-around: +// If the conversion errors out and does not advance the pointers at all, we +// retry the conversion with a space character prepended to the string. If it +// still does error out, we retry the whole conversion character by character. +// This is costly even on other platforms in one single case: The first +// character is an invalid Unicode code point or otherwise not convertible. Any +// following non-convertible characters are not a problem. + +inline std::wstring decode_locale_impl(const std::string & str, const std::locale & locale, wchar_t replacement = L'\uFFFD', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::wstring(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const char * in_begin = str.data(); + const char * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + wchar_t * out_begin = out.data(); + wchar_t * out_end = out.data() + out.size(); + const char * in_next = nullptr; + wchar_t * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + decode_locale_impl(std::string(" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return decode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::wstring(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::wstring(out.data(), out_next); +} + +template +inline mpt::widestring decode_locale(const std::locale & locale, const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return decode_locale_impl(src, locale); + } else { + return decode_locale_impl(std::string(src.begin(), src.end()), locale); + } +} + +inline std::string encode_locale_impl(const std::wstring & str, const std::locale & locale, char replacement = '?', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::string(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const wchar_t * in_begin = str.data(); + const wchar_t * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + char * out_begin = out.data(); + char * out_end = out.data() + out.size(); + const wchar_t * in_next = nullptr; + char * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + encode_locale_impl(std::wstring(L" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return encode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::string(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::string(out.data(), out_next); +} + +template +inline Tdststring encode_locale(const std::locale & locale, const mpt::widestring & src) { + if constexpr (std::is_same::value) { + return encode_locale_impl(src, locale); + } else { + const std::string tmp = encode_locale_impl(src, locale); + return Tdststring(tmp.begin(), tmp.end()); + } +} + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +#if MPT_OS_WINDOWS +template +inline Tdststring encode(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline Tdststring encode(const std::locale & locale, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline Tdststring encode(const char32_t (&table)[256], const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_8bit(src, table); +} + +template +inline Tdststring encode(common_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return encode_utf8(src); + break; + case common_encoding::ascii: + return encode_ascii(src); + break; + case common_encoding::iso8859_1: + return encode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return encode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return encode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return encode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return encode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline Tdststring encode(logical_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return encode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return encode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return encode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return encode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + +#if MPT_OS_WINDOWS +template +inline mpt::widestring decode(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline mpt::widestring decode(const std::locale & locale, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline mpt::widestring decode(const char32_t (&table)[256], const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_8bit(src, table); +} + +template +inline mpt::widestring decode(common_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return decode_utf8(src); + break; + case common_encoding::ascii: + return decode_ascii(src); + break; + case common_encoding::iso8859_1: + return decode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return decode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return decode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return decode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return decode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline mpt::widestring decode(logical_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return decode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return decode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return decode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return decode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + + + +inline bool is_utf8(const std::string & str) { + return (str == encode(common_encoding::utf8, decode(common_encoding::utf8, str))); +} + + + +template +struct string_converter { +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::wstring; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct string_converter { + using string_type = std::u8string; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(common_encoding::utf8, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(common_encoding::utf8, src); + } +}; +#endif // C++10 + +template <> +struct string_converter { + using string_type = std::u16string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } +}; + +#if defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#else // !MPT_COMPILER_QUIRK_NO_WCHAR +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } +}; +#endif // MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_DETECTED_MFC + +template <> +struct string_converter { + using string_type = CStringW; + static inline mpt::widestring decode(const string_type & src) { + return mpt::widestring(src.GetString()); + } + static inline string_type encode(const mpt::widestring & src) { + return src.c_str(); + } +}; + +template <> +struct string_converter { + using string_type = CStringA; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(mpt::logical_encoding::locale, std::string(src.GetString())); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(mpt::logical_encoding::locale, src).c_str(); + } +}; + +#endif // MPT_DETECTED_MFC + +template ::type>::value, bool> = true> +inline Tdststring convert(const Tsrcstring & src) { + if constexpr (std::is_same::type>::value) { + return mpt::as_string(src); + } else { + return string_converter::encode(string_converter::decode(mpt::as_string(src))); + } +} + +template ::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding to, const Tsrcstring & src) { + return mpt::encode(to, string_converter::decode(mpt::as_string(src))); +} + +template ::type, std::string>::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding from, const Tsrcstring & src) { + return string_converter::encode(mpt::decode(from, mpt::as_string(src))); +} + +template ::type>::value, bool> = true> +inline Tdststring convert(Tto to, Tfrom from, const Tsrcstring & src) { + return mpt::encode(to, mpt::decode(from, mpt::as_string(src))); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_CONVERT_HPP Property changes on: src/mpt/string_convert/convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/macros.hpp =================================================================== --- src/mpt/string_convert/macros.hpp (nonexistent) +++ src/mpt/string_convert/macros.hpp (working copy) @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_MACROS_HPP +#define MPT_STRING_CONVERT_MACROS_HPP + + + +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + + + +// The MPT_UTF8_STRING allows specifying UTF8 char arrays. +// The resulting type is mpt::ustring and the construction might require runtime translation, +// i.e. it is NOT generally available at compile time. +// Use explicit UTF8 encoding, +// i.e. U+00FC (LATIN SMALL LETTER U WITH DIAERESIS) would be written as "\xC3\xBC". +#define MPT_UTF8_STRING(x) mpt::convert(mpt::common_encoding::utf8, std::string{x}) + + + +#endif // MPT_STRING_CONVERT_MACROS_HPP Property changes on: src/mpt/string_convert/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/tests/tests_string_convert.hpp =================================================================== --- src/mpt/string_convert/tests/tests_string_convert.hpp (nonexistent) +++ src/mpt/string_convert/tests/tests_string_convert.hpp (working copy) @@ -0,0 +1,227 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP +#define MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/string_convert/macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string_convert{ + +MPT_TEST_GROUP_INLINE("mpt/string_convert") +{ + // MPT_UTF8_STRING version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_UTF8_STRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_UTF8_STRING("a")); + +#if MPT_OS_EMSCRIPTEN + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("\xe2\x8c\x82")), "\xe2\x8c\x82"); +#endif // MPT_OS_EMSCRIPTEN + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) (\xC3\xA4) and CJK U+5BB6 (\xE5\xAE\xB6) + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + + // wide L"" version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), L"a"); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), L"a"); + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4428) // universal-character-name encountered in source +#endif + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"abc")); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u5BB6xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace string_convert +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP Property changes on: src/mpt/string_convert/tests/tests_string_convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/system_error/system_error.hpp =================================================================== --- src/mpt/system_error/system_error.hpp (nonexistent) +++ src/mpt/system_error/system_error.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP +#define MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#if MPT_OS_WINDOWS +#include +#if MPT_OS_WINDOWS_WINRT +#include +#endif // MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +namespace windows { + + + +inline mpt::ustring GetErrorMessage(DWORD errorCode, HANDLE hModule = NULL) { +#if MPT_OS_WINDOWS_WINRT + std::vector msgbuf(65536); + if (FormatMessage( + (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + msgbuf.data(), + mpt::saturate_cast(msgbuf.size()), + NULL) + == 0) + { + DWORD e = GetLastError(); + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + return mpt::convert(mpt::winstring{msgbuf.data()}); +#else + mpt::ustring message; + void * lpMsgBuf = nullptr; + if (FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&lpMsgBuf, + 0, + NULL) + == 0) + { + DWORD e = GetLastError(); + if (lpMsgBuf) { + LocalFree(lpMsgBuf); + } + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + if (!lpMsgBuf) { + return {}; + } + try { + message = mpt::convert(mpt::winstring{static_cast(lpMsgBuf)}); + } catch (mpt::out_of_memory e) { + LocalFree(lpMsgBuf); + mpt::rethrow_out_of_memory(e); + } + LocalFree(lpMsgBuf); + return message; +#endif +} + + +class error + : public std::runtime_error { +public: + error(DWORD errorCode, HANDLE hModule = NULL) + : std::runtime_error(mpt::convert(mpt::exception_encoding, MPT_UFORMAT_MESSAGE("Windows Error: 0x{}: {}")(mpt::format::hex0<8>(errorCode), GetErrorMessage(errorCode, hModule)))) { + return; + } +}; + + +inline HANDLE CheckFileHANDLE(HANDLE handle) { + if (handle == INVALID_HANDLE_VALUE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline HANDLE CheckHANDLE(HANDLE handle) { + if (handle == NULL) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline void CheckBOOL(BOOL result) { + if (result == FALSE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + +inline void ExpectError(DWORD expected) { + DWORD err = ::GetLastError(); + if (err != expected) { + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + + +} // namespace windows + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP Property changes on: src/mpt/system_error/system_error.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test.hpp =================================================================== --- src/mpt/test/test.hpp (nonexistent) +++ src/mpt/test/test.hpp (working copy) @@ -0,0 +1,551 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_HPP +#define MPT_TEST_TEST_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/source_location.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +template +struct is_to_stream_writable : std::false_type { }; + +template +struct is_to_stream_writable() << std::declval())>> : std::true_type { }; + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + std::ostringstream s; + s << x; + return s.str(); +} + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + return typeid(x).name(); +} + +inline std::string get_exception_text() { + std::string result; + try { + throw; + } catch (const std::exception & e) { + result = e.what(); + } catch (...) { + result = "unknown exception"; + } + return result; +} + +struct result_success { +}; +struct result_failure { + std::string text{}; +}; +struct result_unexpected_exception { + std::string text{}; +}; + +struct result { + std::variant info{std::monostate{}}; +}; + +struct statistics_counters { + std::size_t total{0}; + std::size_t run{0}; + std::size_t successes{0}; + std::size_t failures{0}; + std::size_t unexpected_exceptions{0}; + std::size_t completed{0}; + constexpr statistics_counters & operator+=(const statistics_counters & other) noexcept { + total += other.total; + run += other.run; + successes += other.successes; + failures += other.failures; + unexpected_exceptions += other.unexpected_exceptions; + completed += other.completed; + return *this; + } +}; + +struct group_statistics { + statistics_counters tests{}; + statistics_counters cases{}; + statistics_counters local_cases{}; +}; + +struct global_statistics { + statistics_counters groups{}; + statistics_counters tests{}; + statistics_counters cases{}; + std::map individual_group_statistics{}; + explicit constexpr operator bool() noexcept { + return succeeded(); + } + constexpr bool operator!() noexcept { + return failed(); + } + constexpr bool succeeded() noexcept { + return groups.successes == groups.run; + } + constexpr bool failed() noexcept { + return groups.failures > 0 || groups.unexpected_exceptions > 0; + } +}; + +class reporter_interface { +protected: + virtual ~reporter_interface() = default; + +public: + virtual void run_begin(const mpt::source_location & loc) = 0; + virtual void group_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void test_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void case_run(const mpt::source_location & loc) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) = 0; + virtual void case_result(const mpt::source_location & loc, const mpt::test::result & result) = 0; + virtual void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) = 0; + virtual void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) = 0; + virtual void run_end(const mpt::source_location & loc, const global_statistics & statistics) = 0; + virtual void immediate_breakpoint() = 0; +}; + +class silent_reporter + : public reporter_interface { +public: + silent_reporter() = default; + ~silent_reporter() override = default; + +public: + virtual void run_begin(const mpt::source_location &) override { + } + virtual void group_begin(const mpt::source_location &, const char *) override { + } + virtual void test_begin(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &) override { + } + virtual void case_run(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *, const char *) override { + } + virtual void case_result(const mpt::source_location &, const mpt::test::result &) override { + } + virtual void test_end(const mpt::source_location &, const char *, const statistics_counters &) override { + } + virtual void group_end(const mpt::source_location &, const char *, const group_statistics &) override { + } + virtual void run_end(const mpt::source_location &, const global_statistics &) override { + } + virtual void immediate_breakpoint() override { + } +}; + +class simple_reporter : public reporter_interface { +private: + std::ostream & s; + +public: + simple_reporter(std::ostream & s_) + : s(s_) { + s.flush(); + } + ~simple_reporter() override { + s.flush(); + } + +public: + void run_begin(const mpt::source_location & loc) override { + static_cast(loc); + s << "Running test suite ..." << std::endl; + } + void group_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << "Running group '" << name << "' ..." << std::endl; + } + void test_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << " Running test '" << name << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc) override { + static_cast(loc); + s << " Checking ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_e) override { + static_cast(loc); + s << " Checking '" << text_e << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) override { + static_cast(loc); + if (text_ex) { + s << " Checking '" << text_e << " throws " << text_ex << "' ..." << std::endl; + } else { + s << " Checking '" << text_e << " throws' ..." << std::endl; + } + } + void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) override { + static_cast(loc); + s << " Checking '" << text_a << " " << text_cmp << " " << text_b << "' ..." << std::endl; + } + void case_result(const mpt::source_location & loc, const mpt::test::result & result) override { + static_cast(loc); + s << " Checking done: "; + if (std::holds_alternative(result.info)) { + s << "Success."; + } else if (std::holds_alternative(result.info)) { + s << "FAILURE: " << std::get(result.info).text; + } else if (std::holds_alternative(result.info)) { + s << "UNEXPECTED EXCEPTION: " << std::get(result.info).text; + } + s << std::endl; + } + void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) override { + static_cast(loc); + static_cast(counters); + s << " Running test '" << name << "' done." << std::endl; + } + void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) override { + static_cast(loc); + static_cast(statistics); + s << "Running group '" << name << "' done." << std::endl; + } + void run_end(const mpt::source_location & loc, const global_statistics & statistics) override { + static_cast(loc); + s << "Running test suite done." << std::endl; + s << "groups: " << statistics.groups.total << " | " << statistics.groups.successes << " passed"; + if (statistics.groups.failures || statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.failures << " FAILED"; + if (statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "tests: " << statistics.tests.total << " | " << statistics.tests.successes << " passed"; + if (statistics.tests.failures || statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.failures << " FAILED"; + if (statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "checks: " << statistics.cases.total << " | " << statistics.cases.successes << " passed"; + if (statistics.cases.failures || statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.failures << " FAILED"; + if (statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + } + void immediate_breakpoint() override { + return; + } +}; + +struct group; + +struct context { + mpt::test::group & group; + mpt::test::reporter_interface & reporter; + mpt::test::group_statistics statistics{}; +}; + +using void_context_function = void (*)(mpt::test::context &); + +struct group { + group * next{nullptr}; + const char * name{""}; + void_context_function func{nullptr}; + inline group(const char * name_, void_context_function f) + : name(name_) + , func(f) { + next = group_list(); + group_list() = this; + } + group_statistics run(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + mpt::test::context context{*this, reporter}; + context.reporter.group_begin(loc, name); + if (func) { + func(context); + } + context.reporter.group_end(loc, name, context.statistics); + return context.statistics; + } + +public: + [[nodiscard]] static inline group *& group_list() noexcept { + static group * group_list = nullptr; + return group_list; + } +}; + +inline global_statistics run_all(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + global_statistics statistics{}; + reporter.run_begin(loc); + for (group * g = group::group_list(); g; g = g->next) { + statistics.groups.total++; + statistics.groups.run++; + group_statistics s = g->run(reporter, loc); + if (s.tests.unexpected_exceptions) { + statistics.groups.unexpected_exceptions++; + } else if (s.tests.failures) { + statistics.groups.failures++; + } else { + statistics.groups.successes++; + } + statistics.tests += s.tests; + statistics.cases += s.cases; + statistics.groups.completed++; + statistics.individual_group_statistics[g->name] = s; + } + reporter.run_end(loc, statistics); + return statistics; +} + +struct test { + + mpt::test::context & context; + const char * name{""}; + mpt::source_location source_location{mpt::source_location::current()}; + void (*breakpoint)(void){nullptr}; + + test(const test &) = delete; + test & operator=(const test &) = delete; + + inline test(mpt::test::context & context_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + inline test(mpt::test::context & context_, const char * name_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , name(name_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + + inline ~test() { + report_test_end(); + } + + void immediate_breakpoint() { + if (breakpoint) { + breakpoint(); + } else { + context.reporter.immediate_breakpoint(); + } + } + + void report_test_begin() { + context.statistics.tests.total++; + context.statistics.tests.run++; + context.statistics.local_cases = statistics_counters{}; + context.reporter.test_begin(source_location, name); + } + + void report_run() { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location); + } + void report_run(const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_e); + } + void report_run(const char * text_ex, const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_ex, text_e); + } + void report_run(const char * text_a, const char * text_cmp, const char * text_b) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_a, text_cmp, text_b); + } + + void report_result(mpt::test::result result) { + if (std::holds_alternative(result.info)) { + context.statistics.local_cases.successes++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.failures++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.unexpected_exceptions++; + } + context.statistics.local_cases.completed++; + context.reporter.case_result(source_location, result); + } + + void report_test_end() { + context.statistics.cases += context.statistics.local_cases; + if (context.statistics.local_cases.unexpected_exceptions) { + context.statistics.tests.unexpected_exceptions++; + } else if (context.statistics.local_cases.failures) { + context.statistics.tests.failures++; + } else { + context.statistics.tests.successes++; + } + context.statistics.tests.completed++; + context.reporter.test_end(source_location, name, context.statistics.local_cases); + } + + template ::value, bool>::type = true> + inline test & expect_throws(Tcallable c, const char * text_ex = nullptr, const char * text_e = nullptr) { + report_run(text_ex ? text_ex : typeid(Texception).name(), text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (const Texception &) { + result.info = mpt::test::result_success{}; + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect_throws_any(Tcallable c, const char * text_e = nullptr) { + report_run(nullptr, text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (...) { + result.info = mpt::test::result_success{}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::invoke(e))).name()); + mpt::test::result result; + try { + const auto ve = std::invoke(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::invoke(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::invoke(b))).name()); + mpt::test::result result; + try { + const auto va = std::invoke(a); + const auto vb = std::invoke(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr && e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::forward(e))).name()); + mpt::test::result result; + try { + const auto ve = std::forward(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::forward(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::forward(b))).name()); + mpt::test::result result; + try { + const auto va = std::forward(a); + const auto vb = std::forward(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } +}; + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_HPP Property changes on: src/mpt/test/test.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test_macros.hpp =================================================================== --- src/mpt/test/test_macros.hpp (nonexistent) +++ src/mpt/test/test_macros.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_MACROS_HPP +#define MPT_TEST_TEST_MACROS_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/preprocessor.hpp" +#include "mpt/test/test.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +#define MPT_TEST_GROUP_BEGIN(name) \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { +#define MPT_TEST_GROUP_END() \ + } \ + } \ + ; + +#define MPT_TEST_GROUP_INLINE_IDENTIFIER(identifier, name) \ + inline void MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_JOIN(mpt_test_group_name_, identifier) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_INLINE(name) \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_STATIC(name) \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + static mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_DELAYED(x) [&] { \ + return x; \ +} + +#define MPT_TEST_EXPECT mpt::test::test{context}.expect + +#define MPT_TEST_EXPECT_EXPR(e) mpt::test::test{mpt_test_context}.expect([&] { return e; }, #e) +#define MPT_TEST_EXPECT_CMP(a, cmp, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, [](const auto & a_, const auto & b_) { return a_ cmp b_; }, [&] { return b; }, #a, #cmp, #b) +#define MPT_TEST_EXPECT_THROWS_ANY(expr) mpt::test::test{mpt_test_context}.expect_throws_any([&] { expr; }, #expr) +#define MPT_TEST_EXPECT_THROWS(exception, expr) mpt::test::test{mpt_test_context}.expect_throws([&] { expr; }, #exception, #expr) + +#define MPT_TEST_EXPECT_EQUAL(a, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, std::equal_to<>{}, [&] { return b; }, #a, "==", #b) + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_MACROS_HPP Property changes on: src/mpt/test/test_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/guid.hpp =================================================================== --- src/mpt/uuid/guid.hpp (nonexistent) +++ src/mpt/uuid/guid.hpp (working copy) @@ -0,0 +1,284 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_GUID_HPP +#define MPT_UUID_GUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +// COM CLSID<->string conversion +// A CLSID string is not necessarily a standard UUID string, +// it might also be a symbolic name for the interface. +// (see CLSIDFromString ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms680589%28v=vs.85%29.aspx )) + +inline mpt::winstring CLSIDToString(CLSID clsid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromCLSID(clsid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromCLSID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromCLSID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + ::CoTaskMemFree(tmp); + tmp = nullptr; + return mpt::convert(str); +} + +inline CLSID StringToCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + // nothing + break; + case E_INVALIDARG: + clsid = CLSID(); + break; + case CO_E_CLASSSTRING: + clsid = CLSID(); + break; + case REGDB_E_CLASSNOTREG: + clsid = CLSID(); + break; + case REGDB_E_READREGDB: + clsid = CLSID(); + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + clsid = CLSID(); + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return clsid; +} + +inline bool VerifyStringToCLSID(const mpt::winstring & str_, CLSID & clsid) { + const std::wstring str = mpt::convert(str_); + bool result = false; + clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + +inline bool IsCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + bool result = false; + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + result = false; + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + result = false; + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + + +// COM IID<->string conversion + +inline IID StringToIID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + IID iid = IID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::IIDFromString(tmp.data(), &iid)) { + case S_OK: + // nothing + break; + case E_OUTOFMEMORY: + iid = IID(); + mpt::throw_out_of_memory(); + break; + case E_INVALIDARG: + iid = IID(); + break; + default: + iid = IID(); + throw std::logic_error("IIDFromString() failed."); + break; + } + return iid; +} + +inline mpt::winstring IIDToString(IID iid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromIID(iid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromIID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromIID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + return mpt::convert(str); +} + + +// General GUID<->string conversion. +// The string must/will be in standard GUID format: {4F9A455D-E7EF-4367-B2F0-0C83A38A5C72} + +inline GUID StringToGUID(const mpt::winstring & str) { + return StringToIID(str); +} + +inline mpt::winstring GUIDToString(GUID guid) { + std::vector tmp(256); + if (::StringFromGUID2(guid, tmp.data(), static_cast(tmp.size())) <= 0) { + throw std::logic_error("StringFromGUID2() failed."); + } + return mpt::convert(tmp.data()); +} + + +// Create a COM GUID + +inline GUID CreateGUID() { + GUID guid = GUID(); + switch (::CoCreateGuid(&guid)) { + case S_OK: + // nothing + break; + default: + guid = GUID(); + throw std::runtime_error("CoCreateGuid() failed."); + } + return guid; +} + + +// Checks the UUID against the NULL UUID. Returns false if it is NULL, true otherwise. + +inline bool IsValid(::UUID uuid) { + return false + || uuid.Data1 != 0 + || uuid.Data2 != 0 + || uuid.Data3 != 0 + || uuid.Data4[0] != 0 + || uuid.Data4[1] != 0 + || uuid.Data4[2] != 0 + || uuid.Data4[3] != 0 + || uuid.Data4[4] != 0 + || uuid.Data4[5] != 0 + || uuid.Data4[6] != 0 + || uuid.Data4[7] != 0; +} + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_GUID_HPP Property changes on: src/mpt/uuid/guid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/tests/tests_uuid.hpp =================================================================== --- src/mpt/uuid/tests/tests_uuid.hpp (nonexistent) +++ src/mpt/uuid/tests/tests_uuid.hpp (working copy) @@ -0,0 +1,95 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_HPP +#define MPT_BASE_TESTS_UUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/guid.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid { + +MPT_TEST_GROUP_INLINE("mpt/uuid") +{ + using namespace mpt::uuid_literals; + + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull).ToUString(), MPT_USTRING("2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32")); +#if MPT_OS_WINDOWS + constexpr mpt::UUID uuid_tmp = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid_tmp); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToGUID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToCLSID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")); +#endif // MPT_OS_WINDOWS + + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + +#if MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::IsValid(mpt::CreateGUID()), true); + { + mpt::UUID uuid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID::FromString(mpt::UUID(uuid).ToUString())); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToGUID(mpt::GUIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToIID(mpt::IIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToCLSID(mpt::CLSIDToString(uuid)))); + } + { + GUID guid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, static_cast(mpt::UUID::FromString(mpt::UUID(guid).ToUString()))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToGUID(mpt::GUIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToIID(mpt::IIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToCLSID(mpt::CLSIDToString(guid))), TRUE); + } +#endif // MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::GenerateLocalUseOnly(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng) != mpt::UUID::Generate(prng), true); + mpt::UUID a = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(a, mpt::UUID::FromString(a.ToUString())); + std::byte uuiddata[16]{}; + for (std::size_t i = 0; i < 16; ++i) { + uuiddata[i] = mpt::byte_cast(static_cast(i)); + } + static_assert(sizeof(mpt::UUID) == 16); + mpt::UUIDbin uuid2; + std::memcpy(&uuid2, uuiddata, 16); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(uuid2).ToUString(), MPT_USTRING("00010203-0405-0607-0809-0a0b0c0d0e0f")); + + constexpr mpt::UUID uuid3 = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid3); +} + +} // namespace uuid +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_HPP Property changes on: src/mpt/uuid/tests/tests_uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/uuid.hpp =================================================================== --- src/mpt/uuid/uuid.hpp (nonexistent) +++ src/mpt/uuid/uuid.hpp (working copy) @@ -0,0 +1,386 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_UUID_HPP +#define MPT_UUID_UUID_HPP + + + +#include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/random/random.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Microsoft on-disk layout +struct GUIDms { + uint32le Data1; + uint16le Data2; + uint16le Data3; + uint64be Data4; // yes, big endian here +}; +constexpr bool declare_binary_safe(const GUIDms &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + +// RFC binary format +struct UUIDbin { + uint32be Data1; + uint16be Data2; + uint16be Data3; + uint64be Data4; +}; +constexpr bool declare_binary_safe(const UUIDbin &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + + + +struct UUID { +private: + uint32 Data1; + uint16 Data2; + uint16 Data3; + uint64 Data4; + +public: + MPT_CONSTEXPRINLINE uint32 GetData1() const noexcept { + return Data1; + } + MPT_CONSTEXPRINLINE uint16 GetData2() const noexcept { + return Data2; + } + MPT_CONSTEXPRINLINE uint16 GetData3() const noexcept { + return Data3; + } + MPT_CONSTEXPRINLINE uint64 GetData4() const noexcept { + return Data4; + } + +public: + MPT_CONSTEXPRINLINE uint64 GetData64_1() const noexcept { + return (static_cast(Data1) << 32) | (static_cast(Data2) << 16) | (static_cast(Data3) << 0); + } + MPT_CONSTEXPRINLINE uint64 GetData64_2() const noexcept { + return Data4; + } + +public: + // xxxxxxxx-xxxx-Mmxx-Nnxx-xxxxxxxxxxxx + // <--32-->-<16>-<16>-<-------64------> + MPT_CONSTEXPRINLINE bool IsNil() const noexcept { + return (Data1 == 0) && (Data2 == 0) && (Data3 == 0) && (Data4 == 0); + } + MPT_CONSTEXPRINLINE bool IsValid() const noexcept { + return (Data1 != 0) || (Data2 != 0) || (Data3 != 0) || (Data4 != 0); + } + MPT_CONSTEXPRINLINE uint8 Variant() const noexcept { + return Nn() >> 4u; + } + MPT_CONSTEXPRINLINE uint8 Version() const noexcept { + return Mm() >> 4u; + } + MPT_CONSTEXPRINLINE bool IsRFC4122() const noexcept { + return (Variant() & 0xcu) == 0x8u; + } + +private: + MPT_CONSTEXPRINLINE uint8 Mm() const noexcept { + return static_cast((Data3 >> 8) & 0xffu); + } + MPT_CONSTEXPRINLINE uint8 Nn() const noexcept { + return static_cast((Data4 >> 56) & 0xffu); + } + void MakeRFC4122(uint8 version) noexcept { + // variant + uint8 Nn = static_cast((Data4 >> 56) & 0xffu); + Data4 &= 0x00ffffffffffffffull; + Nn &= ~(0xc0u); + Nn |= 0x80u; + Data4 |= static_cast(Nn) << 56; + // version + version &= 0x0fu; + uint8 Mm = static_cast((Data3 >> 8) & 0xffu); + Data3 &= 0x00ffu; + Mm &= ~(0xf0u); + Mm |= (version << 4u); + Data3 |= static_cast(Mm) << 8; + } +#if MPT_OS_WINDOWS +private: + static mpt::UUID UUIDFromWin32(::UUID uuid) { + return mpt::UUID(uuid.Data1, uuid.Data2, uuid.Data3, (static_cast(0) | (static_cast(uuid.Data4[0]) << 56) | (static_cast(uuid.Data4[1]) << 48) | (static_cast(uuid.Data4[2]) << 40) | (static_cast(uuid.Data4[3]) << 32) | (static_cast(uuid.Data4[4]) << 24) | (static_cast(uuid.Data4[5]) << 16) | (static_cast(uuid.Data4[6]) << 8) | (static_cast(uuid.Data4[7]) << 0))); + } + static ::UUID UUIDToWin32(mpt::UUID uuid) { + ::UUID result = ::UUID(); + result.Data1 = uuid.GetData1(); + result.Data2 = uuid.GetData2(); + result.Data3 = uuid.GetData3(); + result.Data4[0] = static_cast(uuid.GetData4() >> 56); + result.Data4[1] = static_cast(uuid.GetData4() >> 48); + result.Data4[2] = static_cast(uuid.GetData4() >> 40); + result.Data4[3] = static_cast(uuid.GetData4() >> 32); + result.Data4[4] = static_cast(uuid.GetData4() >> 24); + result.Data4[5] = static_cast(uuid.GetData4() >> 16); + result.Data4[6] = static_cast(uuid.GetData4() >> 8); + result.Data4[7] = static_cast(uuid.GetData4() >> 0); + return result; + } + +public: + explicit UUID(::UUID uuid) { + *this = UUIDFromWin32(uuid); + } + operator ::UUID() const { + return UUIDToWin32(*this); + } +#endif // MPT_OS_WINDOWS +private: + static MPT_CONSTEXPRINLINE uint8 NibbleFromChar(char x) { + return ('0' <= x && x <= '9') ? static_cast(x - '0' + 0) : ('a' <= x && x <= 'z') ? static_cast(x - 'a' + 10) + : ('A' <= x && x <= 'Z') ? static_cast(x - 'A' + 10) + : mpt::constexpr_throw(std::domain_error("")); + } + static MPT_CONSTEXPRINLINE uint8 ByteFromHex(char x, char y) { + return static_cast(uint8(0) | (NibbleFromChar(x) << 4) | (NibbleFromChar(y) << 0)); + } + static MPT_CONSTEXPRINLINE uint16 ParseHex16(const char * str) { + return static_cast(uint16(0) | (static_cast(ByteFromHex(str[0], str[1])) << 8) | (static_cast(ByteFromHex(str[2], str[3])) << 0)); + } + static MPT_CONSTEXPRINLINE uint32 ParseHex32(const char * str) { + return static_cast(uint32(0) | (static_cast(ByteFromHex(str[0], str[1])) << 24) | (static_cast(ByteFromHex(str[2], str[3])) << 16) | (static_cast(ByteFromHex(str[4], str[5])) << 8) | (static_cast(ByteFromHex(str[6], str[7])) << 0)); + } + +public: + static MPT_CONSTEXPRINLINE UUID ParseLiteral(const char * str, std::size_t len) { + return (len == 36 && str[8] == '-' && str[13] == '-' && str[18] == '-' && str[23] == '-') ? mpt::UUID( + ParseHex32(str + 0), + ParseHex16(str + 9), + ParseHex16(str + 14), + uint64(0) + | (static_cast(ParseHex16(str + 19)) << 48) + | (static_cast(ParseHex16(str + 24)) << 32) + | (static_cast(ParseHex32(str + 28)) << 0)) + : mpt::constexpr_throw(std::domain_error("")); + } + +public: + MPT_CONSTEXPRINLINE UUID() noexcept + : Data1(0) + , Data2(0) + , Data3(0) + , Data4(0) { + return; + } + MPT_CONSTEXPRINLINE explicit UUID(uint32 Data1, uint16 Data2, uint16 Data3, uint64 Data4) noexcept + : Data1(Data1) + , Data2(Data2) + , Data3(Data3) + , Data4(Data4) { + return; + } + explicit UUID(UUIDbin uuid) { + Data1 = uuid.Data1.get(); + Data2 = uuid.Data2.get(); + Data3 = uuid.Data3.get(); + Data4 = uuid.Data4.get(); + } + explicit UUID(GUIDms guid) { + Data1 = guid.Data1.get(); + Data2 = guid.Data2.get(); + Data3 = guid.Data3.get(); + Data4 = guid.Data4.get(); + } + operator UUIDbin() const { + UUIDbin result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + operator GUIDms() const { + GUIDms result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + +public: + // Create a UUID + template + static UUID Generate(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreate(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return mpt::UUID::RFC4122Random(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + return RFC4122Random(rng); +#endif + } + // Create a UUID that contains local, traceable information. + // Safe for local use. May be faster. + template + static UUID GenerateLocalUseOnly(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT +#if _WIN32_WINNT >= 0x0501 + // Available since Win2000, but we check for WinXP in order to not use this + // function in Win32old builds. It is not available on some non-fully + // patched Win98SE installs in the wild. + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreateSequential(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return Generate(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + // Fallback to ::UuidCreate is safe as ::UuidCreateSequential is only a + // tiny performance optimization. + return Generate(rng); +#endif +#else + return RFC4122Random(rng); +#endif + } + // Create a RFC4122 Random UUID. + template + static UUID RFC4122Random(Trng & prng) { + UUID result; + result.Data1 = mpt::random(prng); + result.Data2 = mpt::random(prng); + result.Data3 = mpt::random(prng); + result.Data4 = mpt::random(prng); + result.MakeRFC4122(4); + return result; + } + friend UUID UUIDRFC4122NamespaceV3(const UUID & ns, const mpt::ustring & name); + friend UUID UUIDRFC4122NamespaceV5(const UUID & ns, const mpt::ustring & name); + +public: + // General UUID<->string conversion. + // The string must/will be in standard UUID format: 4f9a455d-e7ef-4367-b2f0-0c83a38a5c72 + static UUID FromString(const mpt::ustring & str) { + std::vector segments = mpt::split(str, MPT_ULITERAL("-")); + if (segments.size() != 5) { + return UUID(); + } + if (segments[0].length() != 8) { + return UUID(); + } + if (segments[1].length() != 4) { + return UUID(); + } + if (segments[2].length() != 4) { + return UUID(); + } + if (segments[3].length() != 4) { + return UUID(); + } + if (segments[4].length() != 12) { + return UUID(); + } + UUID result; + result.Data1 = mpt::ConvertHexStringTo(segments[0]); + result.Data2 = mpt::ConvertHexStringTo(segments[1]); + result.Data3 = mpt::ConvertHexStringTo(segments[2]); + result.Data4 = mpt::ConvertHexStringTo(segments[3] + segments[4]); + return result; + } + mpt::ustring ToUString() const { + return mpt::ustring() + + mpt::format::hex0<8>(GetData1()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData2()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData3()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 48)) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 32)) + + mpt::format::hex0<8>(static_cast(GetData4() >> 0)); + } +}; + +MPT_CONSTEXPRINLINE bool operator==(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() == b.GetData1()) && (a.GetData2() == b.GetData2()) && (a.GetData3() == b.GetData3()) && (a.GetData4() == b.GetData4()); +} + +MPT_CONSTEXPRINLINE bool operator!=(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() != b.GetData1()) || (a.GetData2() != b.GetData2()) || (a.GetData3() != b.GetData3()) || (a.GetData4() != b.GetData4()); +} + + +namespace uuid_literals { + +MPT_CONSTEXPRINLINE mpt::UUID operator"" _uuid(const char * str, std::size_t len) { + return mpt::UUID::ParseLiteral(str, len); +} + +} // namespace uuid_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_UUID_HPP Property changes on: src/mpt/uuid/uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_NAMESPACE_HPP +#define MPT_BASE_TESTS_UUID_NAMESPACE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/uuid.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid_namespace { + +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +{ + constexpr mpt::UUID uuid_ns_dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"_uuid; + constexpr mpt::UUID expected = "74738ff5-5367-5958-9aee-98fffdcd1876"_uuid; + mpt::UUID gotten = mpt::UUIDRFC4122NamespaceV5(uuid_ns_dns, MPT_USTRING("www.example.org")); + MPT_TEST_EXPECT_EQUAL(gotten, expected); +} + +} // namespace uuid_namespace +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/uuid_namespace.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP +#define MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + +// Create a RFC4122 Version 3 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV3(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::MD5().process(mpt::as_span(buf)).result(); + mpt::UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(3); + return uuid; +} + +// Create a RFC4122 Version 5 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV5(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::SHA1().process(mpt::as_span(buf)).result(); + UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(5); + return uuid; +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/.clang-format =================================================================== --- src/mpt/.clang-format (nonexistent) +++ src/mpt/.clang-format (working copy) @@ -0,0 +1,130 @@ +Language: Cpp +Standard: c++17 + +AccessModifierOffset: -4 #? +AlignAfterOpenBracket: AlwaysBreak +AlignConsecutiveAssignments: false +AlignConsecutiveBitFields: false +AlignConsecutiveDeclarations: false +AlignConsecutiveMacros: true +AlignEscapedNewlines: DontAlign +AlignOperands: DontAlign +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Empty +AllowShortIfStatementsOnASingleLine: false +AllowShortLambdasOnASingleLine: Inline +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: MultiLine + AfterEnum: false + AfterFunction: false + AfterNamespace: false + #AfterObjCDeclaration + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: false + SplitEmptyNamespace: true +#BreakAfterJavaFieldAnnotations +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeComma +BreakStringLiterals: false +ColumnLimit: 0 +CommentPragmas: '' #? +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 #? +ContinuationIndentWidth: 4 #? +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +FixNamespaceComments: true +ForEachMacros: [] +IncludeBlocks: Preserve +IncludeCategories: [] #? +IncludeIsMainRegex: '' #? +IncludeIsMainSourceRegex: '' #? +IndentCaseLabels: true +IndentCaseBlocks: true +IndentExternBlock: NoIndent +IndentGotoLabels: false +IndentPPDirectives: None +InsertTrailingCommas: None +#BeforeHash +IndentWidth: 4 +IndentWrappedFunctionNames: true +#JavaImportGroups +#JavaScriptQuotes +#JavaScriptWrapImports +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '^MPT_TEST_GROUP_BEGIN$' #? +MacroBlockEnd: '^MPT_TEST_GROUP_END$' #? +MaxEmptyLinesToKeep: 5 +NamespaceIndentation: None +NamespaceMacros: [] #? +#ObjCBinPackProtocolList +#ObjCBlockIndentWidth +#ObjCBreakBeforeNestedBlockParam +#ObjCSpaceAfterProperty +#ObjCSpaceBeforeProtocolList +#PenaltyBreakAssignment +#PenaltyBreakBeforeFirstCallParameter +#PenaltyBreakComment +#PenaltyBreakFirstLessLess +#PenaltyBreakString +#PenaltyBreakTemplateDeclaration +#PenaltyExcessCharacter +#PenaltyReturnTypeOnItsOwnLine +PointerAlignment: Middle +#RawStringFormats +ReflowComments: false +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInParentheses: false +SpacesInSquareBrackets: false +StatementMacros: [ '_Pragma', '__pragma', 'MPT_WARNING', 'MPT_TEST_GROUP_INLINE_IDENTIFIER', 'MPT_TEST_GROUP_INLINE', 'MPT_TEST_GROUP_STATIC' ] #? +TabWidth: 4 +TypenameMacros: [] #? +UseCRLF: false +UseTab: ForContinuationAndIndentation +WhitespaceSensitiveMacros: + - MPT_PP_STRINGIFY Property changes on: src/mpt/.clang-format ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-clang-format \ No newline at end of property Index: src/mpt/LICENSE.BSD-3-Clause.txt =================================================================== --- src/mpt/LICENSE.BSD-3-Clause.txt (nonexistent) +++ src/mpt/LICENSE.BSD-3-Clause.txt (working copy) @@ -0,0 +1,25 @@ +Copyright (c) 2004-2021, OpenMPT Project Developers and Contributors +Copyright (c) 1997-2003, Olivier Lapicque +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenMPT project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Property changes on: src/mpt/LICENSE.BSD-3-Clause.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: src/mpt/LICENSE.BSL-1.0.txt =================================================================== --- src/mpt/LICENSE.BSL-1.0.txt (nonexistent) +++ src/mpt/LICENSE.BSL-1.0.txt (working copy) @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. Property changes on: src/mpt/LICENSE.BSL-1.0.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: src/mpt/base/algorithm.hpp =================================================================== --- src/mpt/base/algorithm.hpp (nonexistent) +++ src/mpt/base/algorithm.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALGORITHM_HPP +#define MPT_BASE_ALGORITHM_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Grows x with an exponential factor suitable for increasing buffer sizes. +// Clamps the result at limit. +// And avoids integer overflows while doing its business. +// The growth factor is 1.5, rounding down, execpt for the initial x==1 case. +template +inline T exponential_grow(const T & x, const Tlimit & limit) { + if (x <= 1) { + return 2; + } + T add = std::min(x >> 1, std::numeric_limits::max() - x); + return std::min(x + add, mpt::saturate_cast(limit)); +} + +template +inline T exponential_grow(const T & x) { + return mpt::exponential_grow(x, std::numeric_limits::max()); +} + + +// Check if val is in [lo,hi] without causing compiler warnings +// if theses checks are always true due to the domain of T. +// GCC does not warn if the type is templated. +template +constexpr bool is_in_range(const T & val, const C & lo, const C & hi) { + return lo <= val && val <= hi; +} + + +template +MPT_CONSTEXPR20_FUN bool contains(const Tcontainer & container, const Tval & value) noexcept(noexcept(std::find(std::begin(container), std::end(container), value))) { + return std::find(std::begin(container), std::end(container), value) != std::end(container); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/algorithm.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/alloc.hpp =================================================================== --- src/mpt/base/alloc.hpp (nonexistent) +++ src/mpt/base/alloc.hpp (working copy) @@ -0,0 +1,157 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALLOC_HPP +#define MPT_BASE_ALLOC_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/memory.hpp" +#include "mpt/base/span.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline mpt::span as_span(std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline mpt::span as_span(const std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline span as_span(std::basic_string & str) { + return span(str.data(), str.size()); +} + +template +inline span as_span(const std::basic_string & str) { + return span(str.data(), str.size()); +} + + + +template +inline std::vector::type> make_vector(T * beg, T * end) { + return std::vector::type>(beg, end); +} + +template +inline std::vector::type> make_vector(T * data, std::size_t size) { + return std::vector::type>(data, data + size); +} + +template +inline std::vector::type> make_vector(mpt::span data) { + return std::vector::type>(data.data(), data.data() + data.size()); +} + +template +inline std::vector::type> make_vector(T (&arr)[N]) { + return std::vector::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::vector::type> make_vector(const std::basic_string & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline std::basic_string::type> make_basic_string(T * beg, T * end) { + return std::basic_string::type>(beg, end); +} + +template +inline std::basic_string::type> make_basic_string(T * data, std::size_t size) { + return std::basic_string::type>(data, data + size); +} + +template +inline std::basic_string::type> make_basic_string(mpt::span data) { + return std::basic_string::type>(data.data(), data.data() + data.size()); +} + +template +inline std::basic_string::type> make_basic_string(T (&arr)[N]) { + return std::basic_string::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::basic_string::type> make_basic_string(const std::vector & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline Tcont1 & append(Tcont1 & cont1, const Tcont2 & cont2) { + cont1.insert(cont1.end(), cont2.begin(), cont2.end()); + return cont1; +} + +template +inline Tcont1 & append(Tcont1 & cont1, Tit2 beg, Tit2 end) { + cont1.insert(cont1.end(), beg, end); + return cont1; +} + + + +template +struct buffer_cast_impl { + inline Tdst operator()(const Tsrc & src) const { + return Tdst(mpt::byte_cast(src.data()), mpt::byte_cast(src.data()) + src.size()); + } +}; + +// casts between vector<->string of byte-castable types +template +inline Tdst buffer_cast(Tsrc src) { + return buffer_cast_impl()(src); +} + + + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } + inline mpt::byte_span operator()(std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALLOC_HPP Property changes on: src/mpt/base/alloc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/arithmetic_shift.hpp =================================================================== --- src/mpt/base/arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/arithmetic_shift.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// mpt::rshift_signed +// mpt::lshift_signed +// Shift a signed integer value in a well-defined manner. +// Does the same thing as MSVC would do. This is verified by the test suite. + +template +constexpr auto rshift_signed_standard(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x >> y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx >>= y; + urx -= roffset >> y; + return static_cast(urx); +} + +template +constexpr auto lshift_signed_standard(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x << y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx <<= y; + urx -= roffset << y; + return static_cast(urx); +} + +#if MPT_COMPILER_SHIFT_SIGNED + +template +constexpr auto rshift_signed_undefined(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x >> y; +} + +template +constexpr auto lshift_signed_undefined(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x << y; +} + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_undefined(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_undefined(x, y); +} + +#else + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_standard(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_standard(x, y); +} + +#endif + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + +template +constexpr auto sar(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto sal(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/array.hpp =================================================================== --- src/mpt/base/array.hpp (nonexistent) +++ src/mpt/base/array.hpp (working copy) @@ -0,0 +1,82 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARRAY_HPP +#define MPT_BASE_ARRAY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct stdarray_extent : std::integral_constant { }; + +template +struct stdarray_extent> : std::integral_constant { }; + +template +struct is_stdarray : std::false_type { }; + +template +struct is_stdarray> : std::true_type { }; + +// mpt::extent is the same as std::extent, +// but also works for std::array, +// and asserts that the given type is actually an array type instead of returning 0. +// use as: +// mpt::extent() +// mpt::extent() +// mpt::extent() +// mpt::extent() +template +constexpr std::size_t extent() noexcept { + using Tarray = typename std::remove_cv::type>::type; + static_assert(std::is_array::value || mpt::is_stdarray::value); + if constexpr (mpt::is_stdarray::value) { + return mpt::stdarray_extent(); + } else { + return std::extent(); + } +} + +template +struct array_size; + +template +struct array_size> { + static constexpr std::size_t size = N; +}; + +template +struct array_size { + static constexpr std::size_t size = N; +}; + + +template +constexpr std::array init_array(const Tx & x) { + std::array result{}; + for (std::size_t i = 0; i < N; ++i) { + result[i] = x; + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARRAY_HPP Property changes on: src/mpt/base/array.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/bit.hpp =================================================================== --- src/mpt/base/bit.hpp (nonexistent) +++ src/mpt/base/bit.hpp (working copy) @@ -0,0 +1,392 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_BIT_HPP +#define MPT_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#endif // C++20 +#include + +#include +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_CXX_AT_LEAST(20) +using std::bit_cast; +#else +// C++2a compatible bit_cast. +// Not implementing constexpr because this is not easily possible pre C++20. +template +MPT_FORCEINLINE typename std::enable_if<(sizeof(Tdst) == sizeof(Tsrc)) && std::is_trivially_copyable::value && std::is_trivially_copyable::value, Tdst>::type bit_cast(const Tsrc & src) noexcept { + Tdst dst{}; + std::memcpy(&dst, &src, sizeof(Tdst)); + return dst; +} +#endif + + + +#if MPT_CXX_AT_LEAST(20) + +using std::endian; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +constexpr mpt::endian get_endian() noexcept { + return mpt::endian::native; +} + +constexpr bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +constexpr bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +constexpr bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#else // !C++20 + +#if !MPT_COMPILER_GENERIC + +#if MPT_COMPILER_MSVC +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define MPT_PLATFORM_BIG_ENDIAN +#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +// fallback: +#if !defined(MPT_PLATFORM_BIG_ENDIAN) && !defined(MPT_PLATFORM_LITTLE_ENDIAN) +// taken from boost/detail/endian.hpp +#if (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) \ + || (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) \ + || (defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN)) +#define MPT_PLATFORM_BIG_ENDIAN +#elif (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) \ + || (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) \ + || (defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN)) +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif defined(__sparc) || defined(__sparc__) \ + || defined(_POWER) || defined(__powerpc__) \ + || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ + || defined(_MIPSEB) || defined(_POWER) \ + || defined(__s390__) +#define MPT_PLATFORM_BIG_ENDIAN +#elif defined(__i386__) || defined(__alpha__) \ + || defined(__ia64) || defined(__ia64__) \ + || defined(_M_IX86) || defined(_M_IA64) \ + || defined(_M_ALPHA) || defined(__amd64) \ + || defined(__amd64__) || defined(_M_AMD64) \ + || defined(__x86_64) || defined(__x86_64__) \ + || defined(_M_X64) || defined(__bfin__) +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +#endif // !MPT_COMPILER_GENERIC + +enum class endian +{ + little = 0x78563412u, + big = 0x12345678u, + weird = 1u, +#if MPT_COMPILER_GENERIC + native = 0u, +#elif defined(MPT_PLATFORM_LITTLE_ENDIAN) + native = little, +#elif defined(MPT_PLATFORM_BIG_ENDIAN) + native = big, +#else + native = 0u, +#endif +}; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +MPT_FORCEINLINE mpt::endian endian_probe() noexcept { + using endian_probe_type = uint32; + static_assert(sizeof(endian_probe_type) == 4); + constexpr endian_probe_type endian_probe_big = 0x12345678u; + constexpr endian_probe_type endian_probe_little = 0x78563412u; + const std::array probe{{std::byte{0x12}, std::byte{0x34}, std::byte{0x56}, std::byte{0x78}}}; + const endian_probe_type test = mpt::bit_cast(probe); + mpt::endian result = mpt::endian::native; + switch (test) { + case endian_probe_big: + result = mpt::endian::big; + break; + case endian_probe_little: + result = mpt::endian::little; + break; + default: + result = mpt::endian::weird; + break; + } + return result; +} + +MPT_FORCEINLINE mpt::endian get_endian() noexcept { +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 6285) // false-positive: ( || ) is always a non-zero constant. +#endif // MPT_COMPILER_MSVC + if constexpr ((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + return mpt::endian::native; + } else { + return mpt::endian_probe(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +} + +MPT_FORCEINLINE bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +MPT_FORCEINLINE bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +MPT_FORCEINLINE bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#endif // C++20 + + + +#if MPT_CXX_AT_LEAST(20) + +using std::bit_ceil; +using std::bit_floor; +using std::bit_width; +using std::countl_one; +using std::countl_zero; +using std::countr_one; +using std::countr_zero; +using std::has_single_bit; +using std::popcount; +using std::rotl; +using std::rotr; + +#else // !C++20 + +// C++20 header. +// Note that we do not use SFINAE here but instead rely on static_assert. + +template +constexpr int popcount(T val) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int result = 0; + while (val > 0) { + if (val & 0x1) { + result++; + } + val >>= 1; + } + return result; +} + +template +constexpr bool has_single_bit(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + return mpt::popcount(x) == 1; +} + +template +constexpr T bit_ceil(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 1; + while (result < x) { + T newresult = result << 1; + if (newresult < result) { + return 0; + } + result = newresult; + } + return result; +} + +template +constexpr T bit_floor(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + if (x == 0) { + return 0; + } + T result = 1; + do { + T newresult = result << 1; + if (newresult < result) { + return result; + } + result = newresult; + } while (result <= x); + return result >> 1; +} + +template +constexpr T bit_width(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 0; + while (x > 0) { + x >>= 1; + result += 1; + } + return result; +} + +template +constexpr int countl_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countl_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr T rotl_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x >> (N - r)) | (x << r); +} + +template +constexpr T rotr_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x << (N - r)) | (x >> r); +} + +template +constexpr T rotl(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotr_impl(x, -s) : ((x >> (N - r)) | (x << r)); +} + +template +constexpr T rotr(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotl_impl(x, -s) : ((x << (N - r)) | (x >> r)); +} + +#endif // C++20 + + + +template +constexpr int lower_bound_entropy_bits(T x_) { + typename std::make_unsigned::type x = static_cast::type>(x_); + return mpt::bit_width(x) == static_cast::type>(mpt::popcount(x)) ? mpt::bit_width(x) : mpt::bit_width(x) - 1; +} + + +template +constexpr bool is_mask(T x) { + static_assert(std::is_integral::value); + typedef typename std::make_unsigned::type unsigned_T; + unsigned_T ux = static_cast(x); + unsigned_T mask = 0; + for (std::size_t bits = 0; bits <= (sizeof(unsigned_T) * 8); ++bits) { + mask = (mask << 1) | 1u; + if (ux == mask) { + return true; + } + } + return false; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_BIT_HPP Property changes on: src/mpt/base/bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/check_platform.hpp =================================================================== --- src/mpt/base/check_platform.hpp (nonexistent) +++ src/mpt/base/check_platform.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CHECK_PLATFORM_HPP +#define MPT_BASE_CHECK_PLATFORM_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +static_assert(sizeof(std::uintptr_t) == sizeof(void *)); +static_assert(std::numeric_limits::digits == 8); + +static_assert(sizeof(char) == 1); + +static_assert(sizeof(std::byte) == 1); +static_assert(alignof(std::byte) == 1); + +static_assert(mpt::arch_bits == static_cast(mpt::pointer_size) * 8); + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CHECK_PLATFORM_HPP Property changes on: src/mpt/base/check_platform.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/compiletime_warning.hpp =================================================================== --- src/mpt/base/compiletime_warning.hpp (nonexistent) +++ src/mpt/base/compiletime_warning.hpp (working copy) @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_COMPILETIME_WARNING_HPP +#define MPT_BASE_COMPILETIME_WARNING_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/preprocessor.hpp" + + + +#if MPT_COMPILER_MSVC + +#define MPT_WARNING(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) +#define MPT_WARNING_STATEMENT(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) + +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) +#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) + +#else + +// portable #pragma message or #warning replacement +#define MPT_WARNING(text) \ + static inline int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME)() noexcept { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + } \ +/**/ +#define MPT_WARNING_STATEMENT(text) \ + int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) = []() { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + }() /**/ + +#endif + + + +#endif // MPT_BASE_COMPILETIME_WARNING_HPP Property changes on: src/mpt/base/compiletime_warning.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/constexpr_throw.hpp =================================================================== --- src/mpt/base/constexpr_throw.hpp (nonexistent) +++ src/mpt/base/constexpr_throw.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CONSTEXPR_THROW_HPP +#define MPT_BASE_CONSTEXPR_THROW_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Work-around for the requirement of at least 1 non-throwing function argument combination in C++ (17,2a). + +template +constexpr bool constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + // cppcheck-suppress identicalConditionAfterEarlyExit + return really; +} + +template +constexpr bool constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + +template +constexpr T constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + return T{}; +} + +template +constexpr T constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CONSTEXPR_THROW_HPP Property changes on: src/mpt/base/constexpr_throw.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect.hpp =================================================================== --- src/mpt/base/detect.hpp (nonexistent) +++ src/mpt/base/detect.hpp (working copy) @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_HPP +#define MPT_BASE_DETECT_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" +#include "mpt/base/detect_libcxx.hpp" +#include "mpt/base/detect_libc.hpp" + + + +#endif // MPT_BASE_DETECT_HPP Property changes on: src/mpt/base/detect.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_compiler.hpp =================================================================== --- src/mpt/base/detect_compiler.hpp (nonexistent) +++ src/mpt/base/detect_compiler.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_COMPILER_HPP +#define MPT_BASE_DETECT_COMPILER_HPP + + + +#define MPT_COMPILER_MAKE_VERSION2(version, sp) ((version)*100 + (sp)) +#define MPT_COMPILER_MAKE_VERSION3(major, minor, patch) ((major)*10000 + (minor)*100 + (patch)) + + + +#if defined(MPT_COMPILER_GENERIC) + +#undef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 1 + +#elif defined(__clang__) && defined(_MSC_VER) && defined(__c2__) + +#error "Clang/C2 is not supported. Please use Clang/LLVM for Windows instead." + +#elif defined(__clang__) + +#define MPT_COMPILER_CLANG 1 +#define MPT_COMPILER_CLANG_VERSION MPT_COMPILER_MAKE_VERSION3(__clang_major__, __clang_minor__, __clang_patchlevel__) +#define MPT_CLANG_AT_LEAST(major, minor, patch) (MPT_COMPILER_CLANG_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_CLANG_BEFORE(major, minor, patch) (MPT_COMPILER_CLANG_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_CLANG_BEFORE(7, 0, 0) +#error "clang version 7 required" +#endif + +#if defined(__clang_analyzer__) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#elif defined(__GNUC__) + +#define MPT_COMPILER_GCC 1 +#define MPT_COMPILER_GCC_VERSION MPT_COMPILER_MAKE_VERSION3(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#define MPT_GCC_AT_LEAST(major, minor, patch) (MPT_COMPILER_GCC_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_GCC_BEFORE(major, minor, patch) (MPT_COMPILER_GCC_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_GCC_BEFORE(8, 1, 0) +#error "GCC version 8.1 required" +#endif + +#elif defined(_MSC_VER) + +#define MPT_COMPILER_MSVC 1 +#if (_MSC_VER >= 1926) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 6) +#elif (_MSC_VER >= 1925) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 5) +#elif (_MSC_VER >= 1924) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 4) +#elif (_MSC_VER >= 1923) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 3) +#elif (_MSC_VER >= 1922) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 2) +#elif (_MSC_VER >= 1921) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 1) +#elif (_MSC_VER >= 1920) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 0) +#elif (_MSC_VER >= 1916) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 9) +#elif (_MSC_VER >= 1915) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 8) +#elif (_MSC_VER >= 1914) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 7) +#elif (_MSC_VER >= 1913) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 6) +#elif (_MSC_VER >= 1912) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 5) +#elif (_MSC_VER >= 1911) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 3) +#elif (_MSC_VER >= 1910) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 0) +#elif (_MSC_VER >= 1900) && defined(_MSVC_LANG) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 3) +#elif (_MSC_VER >= 1900) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 0) +#elif (_MSC_VER >= 1800) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2013, 0) +#elif (_MSC_VER >= 1700) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2012, 0) +#elif (_MSC_VER >= 1600) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2010, 0) +#elif (_MSC_VER >= 1500) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2008, 0) +#else +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2005, 0) +#endif +#define MPT_MSVC_AT_LEAST(version, sp) (MPT_COMPILER_MSVC_VERSION >= MPT_COMPILER_MAKE_VERSION2((version), (sp))) +#define MPT_MSVC_BEFORE(version, sp) (MPT_COMPILER_MSVC_VERSION < MPT_COMPILER_MAKE_VERSION2((version), (sp))) + +#if MPT_MSVC_BEFORE(2017, 9) +#error "MSVC version 2017 15.9 required" +#endif + +#if defined(_PREFAST_) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#else + +#define MPT_COMPILER_GENERIC 1 + +#endif + + + +#ifndef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 0 +#endif +#ifndef MPT_COMPILER_CLANG +#define MPT_COMPILER_CLANG 0 +#define MPT_CLANG_AT_LEAST(major, minor, patch) 0 +#define MPT_CLANG_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_GCC +#define MPT_COMPILER_GCC 0 +#define MPT_GCC_AT_LEAST(major, minor, patch) 0 +#define MPT_GCC_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_MSVC +#define MPT_COMPILER_MSVC 0 +#define MPT_MSVC_AT_LEAST(version, sp) 0 +#define MPT_MSVC_BEFORE(version, sp) 0 +#endif + + + +#if MPT_COMPILER_GENERIC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#if (__cplusplus >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#elif MPT_COMPILER_MSVC + +#if (_MSVC_LANG >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#else + +#define MPT_CXX 17 + +#endif + +// MPT_CXX is stricter than just using __cplusplus directly. +// We will only claim a language version as supported IFF all core language and +// library fatures that we need are actually supported AND working correctly +// (to our needs). + +#define MPT_CXX_AT_LEAST(version) (MPT_CXX >= (version)) +#define MPT_CXX_BEFORE(version) (MPT_CXX < (version)) + + + +#endif // MPT_BASE_DETECT_COMPILER_HPP Property changes on: src/mpt/base/detect_compiler.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libc.hpp =================================================================== --- src/mpt/base/detect_libc.hpp (nonexistent) +++ src/mpt/base/detect_libc.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBC_HPP +#define MPT_BASE_DETECT_LIBC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#include + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBC_GENERIC 1 +#elif MPT_COMPILER_GCC && (defined(__MINGW32__) || defined(__MINGW64__)) +#define MPT_LIBC_MS 1 +#elif defined(__GNU_LIBRARY__) +#define MPT_LIBC_GLIBC 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBC_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBC_MS 1 +#else +#define MPT_LIBC_GENERIC 1 +#endif + +#ifndef MPT_LIBC_GENERIC +#define MPT_LIBC_GENERIC 0 +#endif +#ifndef MPT_LIBC_GLIBC +#define MPT_LIBC_GLIBC 0 +#endif +#ifndef MPT_LIBC_MS +#define MPT_LIBC_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBC_HPP Property changes on: src/mpt/base/detect_libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libcxx.hpp =================================================================== --- src/mpt/base/detect_libcxx.hpp (nonexistent) +++ src/mpt/base/detect_libcxx.hpp (working copy) @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBCXX_HPP +#define MPT_BASE_DETECT_LIBCXX_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#endif // C++20 + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBCXX_GENERIC 1 +#elif defined(_LIBCPP_VERSION) +#define MPT_LIBCXX_LLVM 1 +#elif defined(__GLIBCXX__) || defined(__GLIBCPP__) +#define MPT_LIBCXX_GNU 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBCXX_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBCXX_MS 1 +#else +#define MPT_LIBCXX_GENERIC 1 +#endif + +#ifndef MPT_LIBCXX_GENERIC +#define MPT_LIBCXX_GENERIC 0 +#endif +#ifndef MPT_LIBCXX_LLVM +#define MPT_LIBCXX_LLVM 0 +#endif +#ifndef MPT_LIBCXX_GNU +#define MPT_LIBCXX_GNU 0 +#endif +#ifndef MPT_LIBCXX_MS +#define MPT_LIBCXX_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBCXX_HPP Property changes on: src/mpt/base/detect_libcxx.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_os.hpp =================================================================== --- src/mpt/base/detect_os.hpp (nonexistent) +++ src/mpt/base/detect_os.hpp (working copy) @@ -0,0 +1,109 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_OS_HPP +#define MPT_BASE_DETECT_OS_HPP + + + +// The order of the checks matters! +#if defined(__DJGPP__) +#define MPT_OS_DJGPP 1 +#elif defined(__EMSCRIPTEN__) +#define MPT_OS_EMSCRIPTEN 1 +#if defined(__EMSCRIPTEN_major__) && defined(__EMSCRIPTEN_minor__) +#if (__EMSCRIPTEN_major__ > 1) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ > 39) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ == 39) && (__EMSCRIPTEN_tiny__ >= 7) +// ok +#else +#error "Emscripten >= 1.39.7 is required." +#endif +#endif +#elif defined(_WIN32) +#define MPT_OS_WINDOWS 1 +#if defined(WINAPI_FAMILY) +#include +#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) +#define MPT_OS_WINDOWS_WINRT 0 +#else +#define MPT_OS_WINDOWS_WINRT 1 +#endif +#else // !WINAPI_FAMILY +#define MPT_OS_WINDOWS_WINRT 0 +#endif // WINAPI_FAMILY +#elif defined(__APPLE__) +#define MPT_OS_MACOSX_OR_IOS 1 +//#include "TargetConditionals.h" +//#if TARGET_IPHONE_SIMULATOR +//#elif TARGET_OS_IPHONE +//#elif TARGET_OS_MAC +//#else +//#endif +#elif defined(__HAIKU__) +#define MPT_OS_HAIKU 1 +#elif defined(__ANDROID__) || defined(ANDROID) +#define MPT_OS_ANDROID 1 +#elif defined(__linux__) +#define MPT_OS_LINUX 1 +#elif defined(__DragonFly__) +#define MPT_OS_DRAGONFLYBSD 1 +#elif defined(__FreeBSD__) +#define MPT_OS_FREEBSD 1 +#elif defined(__OpenBSD__) +#define MPT_OS_OPENBSD 1 +#elif defined(__NetBSD__) +#define MPT_OS_NETBSD 1 +#elif defined(__unix__) +#define MPT_OS_GENERIC_UNIX 1 +#else +#define MPT_OS_UNKNOWN 1 +#endif + +#ifndef MPT_OS_DJGPP +#define MPT_OS_DJGPP 0 +#endif +#ifndef MPT_OS_EMSCRIPTEN +#define MPT_OS_EMSCRIPTEN 0 +#endif +#ifndef MPT_OS_WINDOWS +#define MPT_OS_WINDOWS 0 +#endif +#ifndef MPT_OS_WINDOWS_WINRT +#define MPT_OS_WINDOWS_WINRT 0 +#endif +#ifndef MPT_OS_MACOSX_OR_IOS +#define MPT_OS_MACOSX_OR_IOS 0 +#endif +#ifndef MPT_OS_HAIKU +#define MPT_OS_HAIKU 0 +#endif +#ifndef MPT_OS_ANDROID +#define MPT_OS_ANDROID 0 +#endif +#ifndef MPT_OS_LINUX +#define MPT_OS_LINUX 0 +#endif +#ifndef MPT_OS_DRAGONFLYBSD +#define MPT_OS_DRAGONFLYBSD 0 +#endif +#ifndef MPT_OS_FREEBSD +#define MPT_OS_FREEBSD 0 +#endif +#ifndef MPT_OS_OPENBSD +#define MPT_OS_OPENBSD 0 +#endif +#ifndef MPT_OS_NETBSD +#define MPT_OS_NETBSD 0 +#endif +#ifndef MPT_OS_GENERIC_UNIX +#define MPT_OS_GENERIC_UNIX 0 +#endif +#ifndef MPT_OS_UNKNOWN +#define MPT_OS_UNKNOWN 0 +#endif + + + +#endif // MPT_BASE_DETECT_OS.hpp Property changes on: src/mpt/base/detect_os.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_quirks.hpp =================================================================== --- src/mpt/base/detect_quirks.hpp (nonexistent) +++ src/mpt/base/detect_quirks.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_QUIRKS_HPP +#define MPT_BASE_DETECT_QUIRKS_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" + + + +#if MPT_COMPILER_MSVC +// Compiler has multiplication/division semantics when shifting signed integers. +#define MPT_COMPILER_SHIFT_SIGNED 1 +#endif + +#ifndef MPT_COMPILER_SHIFT_SIGNED +#define MPT_COMPILER_SHIFT_SIGNED 0 +#endif + + + +// This should really be based on __STDCPP_THREADS__, but that is not defined by +// GCC or clang. Stupid. +// Just assume multithreaded and disable for platforms we know are +// singlethreaded later on. +#define MPT_PLATFORM_MULTITHREADED 1 + +#if MPT_OS_DJGPP +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + +#if (MPT_OS_EMSCRIPTEN && !defined(__EMSCRIPTEN_PTHREADS__)) +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE +#endif + + + +#if MPT_OS_DJGPP +#define MPT_COMPILER_QUIRK_NO_WCHAR +#endif + + + +#if defined(__arm__) + +#if defined(__SOFTFP__) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#if defined(__VFP_FP__) +// native-endian IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#elif defined(__MAVERICK__) +// little-endian IEEE754, we assume native-endian though +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#else +// not IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 1 +#endif + +#elif defined(__mips__) + +#if defined(__mips_soft_float) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif + +#endif + +#if MPT_OS_EMSCRIPTEN +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 1 +#endif + +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER32 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER32 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER64 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_EMULATED +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#endif + + + +#endif // MPT_BASE_DETECT_QUIRKS_HPP Property changes on: src/mpt/base/detect_quirks.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/floatingpoint.hpp =================================================================== --- src/mpt/base/floatingpoint.hpp (nonexistent) +++ src/mpt/base/floatingpoint.hpp (working copy) @@ -0,0 +1,93 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_FLOATINGPOINT_HPP +#define MPT_BASE_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// fp half +// n/a + +// fp single +using single = float; +namespace float_literals { +constexpr single operator"" _fs(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp double +namespace float_literals { +constexpr double operator"" _fd(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp extended +namespace float_literals { +constexpr long double operator"" _fe(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp quad +// n/a + +using float32 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float32 operator"" _f32(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +using float64 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float64 operator"" _f64(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +template +struct float_traits { + static constexpr bool is_float = !std::numeric_limits::is_integer; + static constexpr bool is_hard = is_float && !MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_soft = is_float && MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_float32 = is_float && (sizeof(T) == 4); + static constexpr bool is_float64 = is_float && (sizeof(T) == 8); + static constexpr bool is_native_endian = is_float && !MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN; + static constexpr bool is_ieee754_binary = is_float && std::numeric_limits::is_iec559 && !MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754; + static constexpr bool is_ieee754_binary32 = is_float && is_ieee754_binary && is_float32; + static constexpr bool is_ieee754_binary64 = is_float && is_ieee754_binary && is_float64; + static constexpr bool is_ieee754_binary32ne = is_float && is_ieee754_binary && is_float32 && is_native_endian; + static constexpr bool is_ieee754_binary64ne = is_float && is_ieee754_binary && is_float64 && is_native_endian; + static constexpr bool is_preferred = is_float && ((is_float32 && MPT_COMPILER_QUIRK_FLOAT_PREFER32) || (is_float64 && MPT_COMPILER_QUIRK_FLOAT_PREFER64)); +}; + +// prefer smaller floats, but try to use IEEE754 floats +using nativefloat = + std::conditional::is_preferred, float32, std::conditional::is_preferred, float64, std::conditional::is_iec559, float, std::conditional::is_iec559, double, std::conditional::is_iec559, long double, float>::type>::type>::type>::type>::type; +namespace float_literals { +constexpr nativefloat operator"" _nf(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_FLOATINGPOINT_HPP Property changes on: src/mpt/base/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/integer.hpp =================================================================== --- src/mpt/base/integer.hpp (nonexistent) +++ src/mpt/base/integer.hpp (working copy) @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_INTEGER_HPP +#define MPT_BASE_INTEGER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using int8 = std::int8_t; +using int16 = std::int16_t; +using int32 = std::int32_t; +using int64 = std::int64_t; +using uint8 = std::uint8_t; +using uint16 = std::uint16_t; +using uint32 = std::uint32_t; +using uint64 = std::uint64_t; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_INTEGER_HPP Property changes on: src/mpt/base/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/macros.hpp =================================================================== --- src/mpt/base/macros.hpp (nonexistent) +++ src/mpt/base/macros.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MACROS_HPP +#define MPT_BASE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +// Advanced inline attributes +#if MPT_COMPILER_MSVC +#define MPT_FORCEINLINE __forceinline +#define MPT_NOINLINE __declspec(noinline) +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_FORCEINLINE __attribute__((always_inline)) inline +#define MPT_NOINLINE __attribute__((noinline)) +#else +#define MPT_FORCEINLINE inline +#define MPT_NOINLINE +#endif + + + +// constexpr +#define MPT_CONSTEXPRINLINE constexpr MPT_FORCEINLINE +#if MPT_CXX_AT_LEAST(20) +#define MPT_CONSTEXPR20_FUN constexpr MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR constexpr +#else // !C++20 +#define MPT_CONSTEXPR20_FUN MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR const +#endif // C++20 + + + +#define MPT_FORCE_CONSTEXPR(expr) [&]() { \ + constexpr auto x = (expr); \ + return x; \ +}() + + + +#if MPT_CXX_AT_LEAST(20) +#define MPT_IS_CONSTANT_EVALUATED20() std::is_constant_evaluated() +#define MPT_IS_CONSTANT_EVALUATED() std::is_constant_evaluated() +#else // !C++20 +#define MPT_IS_CONSTANT_EVALUATED20() false +// this pessimizes the case for C++17 by always assuming constexpr context, which implies always running constexpr-friendly code +#define MPT_IS_CONSTANT_EVALUATED() true +#endif // C++20 + + + +#if MPT_COMPILER_MSVC +#define MPT_MAYBE_CONSTANT_IF(x) \ + __pragma(warning(push)) \ + __pragma(warning(disable : 4127)) \ + if (x) \ + __pragma(warning(pop)) \ +/**/ +#endif + +#if MPT_COMPILER_GCC +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ + if (x) \ + _Pragma("GCC diagnostic pop") \ +/**/ +#endif + +#if MPT_COMPILER_CLANG +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \ + _Pragma("clang diagnostic ignored \"-Wtype-limits\"") \ + _Pragma("clang diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \ + if (x) \ + _Pragma("clang diagnostic pop") \ +/**/ +#endif + +#if !defined(MPT_MAYBE_CONSTANT_IF) +// MPT_MAYBE_CONSTANT_IF disables compiler warnings for conditions that may in some case be either always false or always true (this may turn out to be useful in ASSERTions in some cases). +#define MPT_MAYBE_CONSTANT_IF(x) if (x) +#endif + + + +#if MPT_OS_WINDOWS +#define MPT_UNUSED(x) UNREFERENCED_PARAMETER(x) +#else +#define MPT_UNUSED(x) static_cast(x) +#endif + + + +#define MPT_DISCARD(expr) static_cast(expr) + + + +// Use MPT_RESTRICT to indicate that a pointer is guaranteed to not be aliased. +#if MPT_COMPILER_MSVC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_RESTRICT __restrict +#else +#define MPT_RESTRICT +#endif + + + +#endif // MPT_BASE_MACROS_HPP Property changes on: src/mpt/base/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/math.hpp =================================================================== --- src/mpt/base/math.hpp (nonexistent) +++ src/mpt/base/math.hpp (working copy) @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_EMPTY_HPP +#define MPT_BASE_EMPTY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_OS_DJGPP + +inline double round(const long double val) { + return ::roundl(val); +} + +inline double round(const double val) { + return ::round(val); +} + +inline float round(const float val) { + return ::roundf(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::round +using std::round; + +#endif // MPT_OS_DJGPP + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_EMPTY_HPP Property changes on: src/mpt/base/math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/memory.hpp =================================================================== --- src/mpt/base/memory.hpp (nonexistent) +++ src/mpt/base/memory.hpp (working copy) @@ -0,0 +1,262 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/span.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +using byte_span = mpt::span; +using const_byte_span = mpt::span; + + + +// Tell which types are safe for mpt::byte_cast. +// signed char is actually not allowed to alias into an object representation, +// which means that, if the actual type is not itself signed char but char or +// unsigned char instead, dereferencing the signed char pointer is undefined +// behaviour. +template +struct is_byte_castable : public std::false_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; + + +template +struct is_byte : public std::false_type { }; +template <> +struct is_byte : public std::true_type { }; +template <> +struct is_byte : public std::true_type { }; + + +template +constexpr bool declare_binary_safe(const T &) noexcept { + return false; +} + +constexpr bool declare_binary_safe(const char &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const uint8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const int8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const std::byte &) noexcept { + return true; +} + +// Tell which types are safe to binary write into files. +// By default, no types are safe. +// When a safe type gets defined, +// also specialize this template so that IO functions will work. +template +struct is_binary_safe : public std::conditional::type { }; + +// Generic Specialization for arrays. +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; + + +template +constexpr bool check_binary_size(std::size_t size) noexcept { + return true + && (sizeof(T) == size) + && (alignof(T) == 1) + && std::is_standard_layout::value + && std::has_unique_object_representations::value + && mpt::is_binary_safe::value; +} + + +template +struct byte_cast_impl { + inline Tdst operator()(Tsrc src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + // not checking is_byte_castable here because we are actually + // doing a static_cast and converting the value + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return static_cast(src); + } +}; + +template +struct byte_cast_impl, mpt::span> { + inline mpt::span operator()(mpt::span src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return mpt::as_span(mpt::byte_cast_impl()(src.data()), mpt::byte_cast_impl()(src.data() + src.size())); + } +}; + +template +struct byte_cast_impl { + inline Tdst * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl; + +template +struct void_cast_impl { + inline Tdst * operator()(void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline Tdst * operator()(const void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline const void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +// casts between different byte (char) types or pointers to these types +template +inline Tdst byte_cast(Tsrc src) noexcept { + return byte_cast_impl()(src); +} + +// casts between pointers to void and pointers to byte +template +inline Tdst void_cast(Tsrc src) noexcept { + return void_cast_impl()(src); +} + + + +template +MPT_CONSTEXPRINLINE std::byte as_byte(T src) noexcept { + static_assert(std::is_integral::value); + return static_cast(static_cast(src)); +} + + + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } + inline mpt::byte_span operator()(T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } + inline mpt::byte_span operator()(T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +// In order to be able to partially specialize it, +// as_raw_memory is implemented via a class template. +// Do not overload or specialize as_raw_memory directly. +// Using a wrapper (by default just around a cast to const std::byte *), +// allows for implementing raw memory access +// via on-demand generating a cached serialized representation. +template +inline mpt::const_byte_span as_raw_memory(const T & v) { + return mpt::as_raw_memory_impl()(v); +} +template +inline mpt::byte_span as_raw_memory(T & v) { + return mpt::as_raw_memory_impl()(v); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_MEMORY_HPP Property changes on: src/mpt/base/memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/namespace.hpp =================================================================== --- src/mpt/base/namespace.hpp (nonexistent) +++ src/mpt/base/namespace.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NAMESPACE_HPP +#define MPT_BASE_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/version.hpp" +#include "mpt/base/compiletime_warning.hpp" + + + +#if !defined(MPT_INLINE_NS) + +#define MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) v##a##_##b##_##c##_##d +#define MPT_BUILD_VERSION_NAMESPACE(a, b, c, d) MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) + +#define MPT_VERSION_NAMESPACE MPT_BUILD_VERSION_NAMESPACE(MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH, MPT_VERSION_BUILD) + +#if MPT_OS_WINDOWS +#ifdef UNICODE +#define MPT_VERSION_ABI_OS u +#else +#define MPT_VERSION_ABI_OS 8 +#endif +#else +#define MPT_VERSION_ABI_OS _ +#endif + +#if MPT_LIBC_GENERIC +#define MPT_VERSION_ABI_LIBC _ +#elif MPT_LIBC_MS +#ifdef _DLL +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MDd +#else +#define MPT_VERSION_ABI_LIBC MDr +#endif +#else +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MTd +#else +#define MPT_VERSION_ABI_LIBC MTr +#endif +#endif +#elif MPT_LIBC_GLIBC +#define MPT_VERSION_ABI_LIBC G +#else +#define MPT_VERSION_ABI_LIBC _ +#endif + +#define MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) ABI_##a##_##b +#define MPT_BUILD_ABI_NAMESPACE(a, b) MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) + +#define MPT_ABI_NAMESPACE MPT_BUILD_ABI_NAMESPACE(MPT_VERSION_ABI_OS, MPT_VERSION_ABI_LIBC) + +#if !defined(MPT_PROJECT_NAMESPACE) +MPT_WARNING("Please #define MPT_PROJECT_NAMESPACE or #define MPT_INLINE_NS in build configuration.") +#define MPT_PROJECT_NAMESPACE x +#endif // !MPT_PROJECT_NAMESPACE + +#define MPT_BUILD_INLINE_NS_IMPL(a, b, c) a##_##b##_##c +#define MPT_BUILD_INLINE_NS(a, b, c) MPT_BUILD_INLINE_NS_IMPL(a, b, c) + +#define MPT_INLINE_NS MPT_BUILD_INLINE_NS(MPT_VERSION_NAMESPACE, MPT_ABI_NAMESPACE, MPT_PROJECT_NAMESPACE) + +#endif // !MPT_INLINE_NS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_NAMESPACE_HPP Property changes on: src/mpt/base/namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/numeric.hpp =================================================================== --- src/mpt/base/numeric.hpp (nonexistent) +++ src/mpt/base/numeric.hpp (working copy) @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NUMERIC_HPP +#define MPT_BASE_NUMERIC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/bit.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + return static_cast(x % m); + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; + +// Returns x % m if m != 0, x otherwise. +// i.e. "return (m == 0) ? x : (x % m);", but without causing a warning with stupid older compilers +template +constexpr Tval modulo_if_not_zero(Tval x) { + return ModIfNotZeroImpl().mod(x); +} + +// rounds x up to multiples of target +template +constexpr T align_up(T x, T target) { + return ((x + (target - 1)) / target) * target; +} + +// rounds x down to multiples of target +template +constexpr T align_down(T x, T target) { + return (x / target) * target; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/numeric.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/pointer.hpp =================================================================== --- src/mpt/base/pointer.hpp (nonexistent) +++ src/mpt/base/pointer.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_POINTER_HPP +#define MPT_BASE_POINTER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr int arch_bits = sizeof(void *) * 8; +inline constexpr std::size_t pointer_size = sizeof(void *); + + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tsrc & src) noexcept { + return src; + } +}; + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; + + +template +constexpr Tdst pointer_cast(const Tsrc & src) noexcept { + return pointer_cast_helper::cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_POINTER_HPP Property changes on: src/mpt/base/pointer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/preprocessor.hpp =================================================================== --- src/mpt/base/preprocessor.hpp (nonexistent) +++ src/mpt/base/preprocessor.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_PREPROCESSOR_HPP +#define MPT_BASE_PREPROCESSOR_HPP + + + +#define MPT_PP_DEFER(m, ...) m(__VA_ARGS__) + +#define MPT_PP_STRINGIFY(x) #x + +#define MPT_PP_JOIN_HELPER(a, b) a##b +#define MPT_PP_JOIN(a, b) MPT_PP_JOIN_HELPER(a, b) + +#define MPT_PP_UNIQUE_IDENTIFIER(prefix) MPT_PP_JOIN(prefix, __LINE__) + + + +#endif // MPT_BASE_PREPROCESSOR_HPP Property changes on: src/mpt/base/preprocessor.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_cast.hpp =================================================================== --- src/mpt/base/saturate_cast.hpp (nonexistent) +++ src/mpt/base/saturate_cast.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_CAST_HPP +#define MPT_BASE_SATURATE_CAST_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Saturate the value of src to the domain of Tdst +template +constexpr Tdst saturate_cast(Tsrc src) noexcept { + // This code tries not only to obviously avoid overflows but also to avoid signed/unsigned comparison warnings and type truncation warnings (which in fact would be safe here) by explicit casting. + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_integer); + if constexpr (std::numeric_limits::is_signed && std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::max(static_cast(std::numeric_limits::min()), std::min(src, static_cast(std::numeric_limits::max())))); + } + } else if constexpr (!std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else if constexpr (std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) > sizeof(Tsrc)) { + return static_cast(src); + } else if constexpr (sizeof(Tdst) == sizeof(Tsrc)) { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else { // Tdst unsigned, Tsrc signed + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(std::max(static_cast(0), src)); + } else { + return static_cast(std::max(static_cast(0), std::min(src, static_cast(std::numeric_limits::max())))); + } + } +} + +template +constexpr Tdst saturate_cast(double src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + +template +constexpr Tdst saturate_cast(float src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_CAST_HPP Property changes on: src/mpt/base/saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_round.hpp =================================================================== --- src/mpt/base/saturate_round.hpp (nonexistent) +++ src/mpt/base/saturate_round.hpp (working copy) @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_ROUND_HPP +#define MPT_BASE_SATURATE_ROUND_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/math.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Rounds given double value to nearest integer value of type T. +// Out-of-range values are saturated to the specified integer type's limits. + +template +inline T saturate_round(float val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(long double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_ROUND_HPP Property changes on: src/mpt/base/saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/secure.hpp =================================================================== --- src/mpt/base/secure.hpp (nonexistent) +++ src/mpt/base/secure.hpp (working copy) @@ -0,0 +1,198 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SECURE_HPP +#define MPT_BASE_SECURE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace secure { + + + +inline MPT_NOINLINE void memzero(std::byte * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(void * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(char * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(uint8 * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + + + +template +inline MPT_NOINLINE void clear(T & val) { + std::atomic_signal_fence(std::memory_order_seq_cst); + volatile T * volatile v = &val; + std::atomic_thread_fence(std::memory_order_seq_cst); + *v = T{}; + std::atomic_signal_fence(std::memory_order_seq_cst); +} + + + +class byte { +private: + std::byte value; + +public: + byte() noexcept + : value(std::byte{0}) { + return; + } + explicit byte(std::byte value) noexcept + : value(value) { + return; + } + byte(const byte & other) noexcept + : value(other.value) { + return; + } + byte(byte && other) noexcept + : value(std::move(other.value)) { + mpt::secure::clear(other.value); + } + byte & operator=(const byte & other) noexcept { + if (&other == this) { + return *this; + } + value = other.value; + return *this; + } + byte & operator==(byte && other) noexcept { + if (&other == this) { + return *this; + } + value = std::move(other.value); + mpt::secure::clear(other.value); + return *this; + } + explicit operator std::byte() const noexcept { + return value; + } + ~byte() { + mpt::secure::clear(value); + } +}; + + + +class buffer { +private: + std::vector m_data; + +public: + buffer() + : m_data(0) { + return; + } + explicit buffer(const std::vector & data) + : m_data(data) { + return; + } + explicit buffer(const std::byte * beg, const std::byte * end) + : m_data(beg, end) { + return; + } + buffer(const buffer & other) + : m_data(other.m_data) { + return; + } + buffer(buffer && other) noexcept + : m_data(std::move(other.m_data)) { + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + } + buffer & operator=(const buffer & other) { + if (&other == this) { + return *this; + } + m_data = other.m_data; + return *this; + } + buffer & operator=(buffer && other) noexcept { + if (&other == this) { + return *this; + } + m_data = std::move(other.m_data); + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + return *this; + } + ~buffer() { + mpt::secure::memzero(m_data.data(), m_data.size()); + m_data.resize(0); + m_data.shrink_to_fit(); + } + explicit operator std::vector() const { + return m_data; + } + const std::byte * data() const { + return m_data.data(); + } + std::byte * data() { + return m_data.data(); + } + std::size_t size() const { + return m_data.size(); + } +}; + + + +} // namespace secure + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SECURE_HPP Property changes on: src/mpt/base/secure.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/semantic_version.hpp =================================================================== --- src/mpt/base/semantic_version.hpp (nonexistent) +++ src/mpt/base/semantic_version.hpp (working copy) @@ -0,0 +1,94 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SEMANTIC_VERSION_HPP +#define MPT_BASE_SEMANTIC_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/version.hpp" + + + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct semantic_version { + unsigned long long major = 0; + unsigned long long minor = 0; + unsigned long long patch = 0; + constexpr std::tuple as_tuple() const noexcept { + return std::make_tuple(major, minor, patch); + } +}; + +constexpr bool operator==(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +struct version_info { + semantic_version semver{}; + unsigned long long build = 0; + constexpr std::tuple, unsigned long long> as_tuple() const noexcept { + return std::make_tuple(semver.as_tuple(), build); + } + template + friend Tostream & operator<<(Tostream & os, version_info const vi) { + if (vi.build > 0) { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch << "+build." << vi.build; + } else { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch; + } + return os; + } +}; + +constexpr bool operator==(version_info const a, version_info const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(version_info const a, version_info const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(version_info const a, version_info const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(version_info const a, version_info const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(version_info const a, version_info const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(version_info const a, version_info const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +constexpr inline version_info Version = {{MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH}, MPT_VERSION_BUILD}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SEMANTIC_VERSION_HPP Property changes on: src/mpt/base/semantic_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/source_location.hpp =================================================================== --- src/mpt/base/source_location.hpp (nonexistent) +++ src/mpt/base/source_location.hpp (working copy) @@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SOURCE_LOCATION_HPP +#define MPT_BASE_SOURCE_LOCATION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#endif // C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::source_location; + +#define MPT_SOURCE_LOCATION_CURRENT() std::source_location::current() + +#else // !C++20 + +#if MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#elif MPT_COMPILER_GCC + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#elif MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#else + +#define MPT_SOURCE_LOCATION_FILE __FILE__ +#define MPT_SOURCE_LOCATION_FUNCTION "" +#define MPT_SOURCE_LOCATION_LINE __LINE__ +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#endif + +// compatible with C++20 std::source_location +struct source_location { +private: + const char * m_file_name; + const char * m_function_name; + uint32 m_line; + uint32 m_column; + +public: + constexpr source_location() noexcept + : m_file_name("") + , m_function_name("") + , m_line(0) + , m_column(0) { + } + constexpr source_location(const char * file, const char * function, uint32 line, uint32 column) noexcept + : m_file_name(file) + , m_function_name(function) + , m_line(line) + , m_column(column) { + } + source_location(const source_location &) = default; + source_location(source_location &&) = default; + static constexpr source_location current(const char * file = MPT_SOURCE_LOCATION_FILE, const char * function = MPT_SOURCE_LOCATION_FUNCTION, uint32 line = MPT_SOURCE_LOCATION_LINE, uint32 column = MPT_SOURCE_LOCATION_COLUMN) noexcept { + return source_location(file, function, line, column); + } + constexpr uint32 line() const noexcept { + return m_line; + } + constexpr uint32 column() const noexcept { + return m_column; + } + constexpr const char * file_name() const noexcept { + return m_file_name; + } + constexpr const char * function_name() const noexcept { + return m_function_name; + } +}; + + +#if (MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6)) || MPT_COMPILER_GCC || (MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0)) +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current() +#else +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current(__FILE__, __func__, __LINE__, 0) +#endif + +#endif // C++20 + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SOURCE_LOCATION_HPP Property changes on: src/mpt/base/source_location.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/span.hpp =================================================================== --- src/mpt/base/span.hpp (nonexistent) +++ src/mpt/base/span.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SPAN_HPP +#define MPT_BASE_SPAN_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#include +#endif // C++20 + +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::dynamic_extent; +using std::span; + +#else // !C++20 + +// Simplified version of gsl::span. +// Non-owning read-only or read-write view into a contiguous block of T +// objects, i.e. equivalent to a (beg,end) or (data,size) tuple. +// Can eventually be replaced without further modifications with a full C++20 +// std::span. + +inline constexpr std::size_t dynamic_extent = std::numeric_limits::max(); + +template +class span { + +public: + using element_type = T; + using value_type = typename std::remove_cv::type; + using index_type = std::size_t; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + + using iterator = pointer; + using const_iterator = const_pointer; + + using difference_type = typename std::iterator_traits::difference_type; + +private: + T * m_beg; + T * m_end; + +public: + span() noexcept + : m_beg(nullptr) + , m_end(nullptr) { + } + + span(pointer beg, pointer end) + : m_beg(beg) + , m_end(end) { + } + + span(pointer data, index_type size) + : m_beg(data) + , m_end(data + size) { + } + + template + span(element_type (&arr)[N]) + : m_beg(arr) + , m_end(arr + N) { + } + + template + span(std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + template + span(const std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + span(const span & other) noexcept = default; + + template + span(const span & other) + : m_beg(other.begin()) + , m_end(other.end()) { + } + + span & operator=(const span & other) noexcept = default; + + iterator begin() const { + return iterator(m_beg); + } + + iterator end() const { + return iterator(m_end); + } + + const_iterator cbegin() const { + return const_iterator(begin()); + } + + const_iterator cend() const { + return const_iterator(end()); + } + + reference operator[](index_type index) { + return m_beg[index]; + } + + const_reference operator[](index_type index) const { + return m_beg[index]; + } + + bool operator==(span const & other) const noexcept { + return size() == other.size() && (m_beg == other.m_beg || std::equal(begin(), end(), other.begin())); + } + + bool operator!=(span const & other) const noexcept { + return !(*this == other); + } + + pointer data() const noexcept { + return m_beg; + } + + bool empty() const noexcept { + return size() == 0; + } + + index_type size() const noexcept { + return static_cast(std::distance(m_beg, m_end)); + } + + index_type length() const noexcept { + return size(); + } + + span subspan(std::size_t offset, std::size_t count = mpt::dynamic_extent) const { + return span(data() + offset, (count == mpt::dynamic_extent) ? (size() - offset) : count); + } + + span first(std::size_t count) const { + return span(data(), count); + } + + span last(std::size_t count) const { + return span(data() + (size() - count), count); + } + +}; // class span + +#endif // C++20 + +template +inline span as_span(T * beg, T * end) { + return span(beg, end); +} + +template +inline span as_span(T * data, std::size_t size) { + return span(data, size); +} + +template +inline span as_span(T (&arr)[N]) { + return span(std::begin(arr), std::end(arr)); +} + +template +inline span as_span(std::array & cont) { + return span(cont); +} + +template +inline span as_span(const std::array & cont) { + return span(cont); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SPAN_HPP Property changes on: src/mpt/base/span.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_arithmetic_shift.hpp =================================================================== --- src/mpt/base/tests/tests_base_arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_arithmetic_shift.hpp (working copy) @@ -0,0 +1,321 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/arithmetic_shift.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace arithmetic_shift { + +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +{ + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), mpt::rshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), mpt::rshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), mpt::rshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), mpt::rshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), mpt::rshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), mpt::rshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), mpt::rshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), mpt::rshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), mpt::rshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), mpt::rshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), mpt::rshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), mpt::rshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), mpt::rshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), mpt::rshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), mpt::rshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), mpt::rshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), mpt::rshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), mpt::rshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), mpt::rshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), mpt::rshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), mpt::rshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), mpt::rshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), mpt::rshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), mpt::rshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), mpt::rshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), mpt::rshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), mpt::rshift_signed_standard(32767, 15)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), mpt::lshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), mpt::lshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), mpt::lshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), mpt::lshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), mpt::lshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), mpt::lshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), mpt::lshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), mpt::lshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), mpt::lshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), mpt::lshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), mpt::lshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), mpt::lshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), mpt::lshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), mpt::lshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), mpt::lshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), mpt::lshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), mpt::lshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), mpt::lshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), mpt::lshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), mpt::lshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), mpt::lshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), mpt::lshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), mpt::lshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), mpt::lshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), mpt::lshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), mpt::lshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), mpt::lshift_signed_standard(32767, 15)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), (-32768) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), (-32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), (-32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), (-2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), (-1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), (0) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), (1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), (2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), (32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), (32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), (-32768) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), (-32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), (-32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), (-2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), (-1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), (0) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), (1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), (2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), (32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), (32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), (-32768) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), (-32767) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), (-32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), (-2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), (-1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), (0) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), (1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), (2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), (32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), (32767) >> 15); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), (-32768) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), (-32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), (-32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), (-2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), (-1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), (0) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), (1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), (2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), (32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), (32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), (-32768) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), (-32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), (-32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), (-2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), (-1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), (0) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), (1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), (2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), (32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), (32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), (-32768) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), (-32767) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), (-32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), (-2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), (-1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), (0) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), (1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), (2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), (32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), (32767) << 15); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_standard(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_standard(0x7fffffff, 31)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_undefined(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_undefined(0x7fffffff, 31)); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(0x7fffffffffffffffll, 63)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 63)); + +#endif +} + +} // namespace arithmetic_shift +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/tests/tests_base_arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_bit.hpp =================================================================== --- src/mpt/base/tests/tests_base_bit.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_bit.hpp (working copy) @@ -0,0 +1,220 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BASE_BIT_HPP +#define MPT_BASE_TESTS_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace bit { + +MPT_TEST_GROUP_INLINE("mpt/base/bit") +{ +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian_probe()); +#endif + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_little()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::little); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::little); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::little); +#endif + } + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_big()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::big); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::big); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::big); +#endif + } + + MPT_TEST_EXPECT_EQUAL(mpt::popcount(static_cast(int32(-1))), 32); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(0u), 0); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(1u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(2u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(3u), 2); + + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(0u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(1u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(2u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(3u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(4u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(5u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(6u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(7u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(8u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(9u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x7fffffffu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000000u)), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000001u)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xfffffffeu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xffffffffu)), false); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(0u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(3u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(5u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(6u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(7u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(9u), 16u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x7fffffffu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000000u)), 0x80000000u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000001u)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xfffffffeu)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xffffffffu)), 0u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(5u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(6u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(7u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(9u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x7fffffffu)), 0x40000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000000u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000001u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xfffffffeu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xffffffffu)), 0x80000000u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(4u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(5u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(6u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(7u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(8u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(9u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x7fffffffu)), 31u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000000u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000001u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xfffffffeu)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xffffffffu)), 32u); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111110)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111100)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11100000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11000000)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b10000000)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000001)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000011)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00011111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00111111)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b01111111)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000001)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000011)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00011111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00111111)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b01111111)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111110)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111100)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11100000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11000000)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b10000000)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xffffffffu), 32); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xfffffffeu), 31); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x80000000u), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7fffffffu), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7ffffffeu), 30); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000007u), 3); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000006u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000005u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000004u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000003u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000002u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000001u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000000u), 0); +} + +} // namespace bit +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BASE_BIT_HPP Property changes on: src/mpt/base/tests/tests_base_bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_math.hpp =================================================================== --- src/mpt/base/tests/tests_base_math.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_math.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_MATH_HPP +#define MPT_BASE_TESTS_MATH_HPP + + + +#include "mpt/base/math.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace math { + +MPT_TEST_GROUP_INLINE("mpt/base/math") +{ + MPT_TEST_EXPECT_EQUAL(mpt::round(1.99), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.5), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.1), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.1), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.5), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.9), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.4), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.7), -2.0); +} + +} // namespace math +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_MATH_HPP Property changes on: src/mpt/base/tests/tests_base_math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_cast.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_cast.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_cast.hpp (working copy) @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_CAST_HPP +#define MPT_BASE_TESTS_SATURATE_CAST_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_cast { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +{ + // trivials + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(-1), -1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(0), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(1), 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + + // signed / unsigned + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int32)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int64)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint64)std::numeric_limits::max()); + + // overflow + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), (uint16)std::numeric_limits::max() + 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), (uint32)std::numeric_limits::max() + 1); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -128); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 32767); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000u); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(static_cast(std::numeric_limits::max())), std::numeric_limits::max()); +} + +} // namespace saturate_cast +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_CAST_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_round.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_round.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_round.hpp (working copy) @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_ROUND_HPP +#define MPT_BASE_TESTS_SATURATE_ROUND_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_round.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_round { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +{ + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() - 0.4), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() + 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() - 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.499), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(110.1), 110); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-110.1), -110); + + // These should fail to compile + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + + // This should trigger assert in Round. + //MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-129), 0); +} + +} // namespace saturate_round +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_ROUND_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_wrapping_divide.hpp =================================================================== --- src/mpt/base/tests/tests_base_wrapping_divide.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_wrapping_divide.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP +#define MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/wrapping_divide.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace wrapping_divide { + +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +{ + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-25, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-23, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-8, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-6, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-5, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-4, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-3, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-2, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-1, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(1, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(2, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(3, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(4, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(5, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(6, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(23, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(25, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(uint32(0x7fffffff), uint32(0x80000000)), uint32(0x7fffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0x7ffffffe), int32(0x7fffffff)), int32(0x7ffffffe)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(2)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(2)), int32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(2)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7fffffff)), int32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffe)), int32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffe)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffd)), int32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffd)), int32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffd)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7fffffff)), int32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7ffffffe)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7ffffffe)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(2)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(2)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(2)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000001), uint32(0xffffffff)), uint32(0xbffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000000), uint32(0xffffffff)), uint32(0xbfffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x3fffffff), uint32(0xffffffff)), uint32(0xc0000000)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000001)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000001)), uint32(2)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000001)), uint32(3)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7fffffff)), uint32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffe)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffd)), uint32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffd)), uint32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffd)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7fffffff)), uint32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7ffffffe)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-15, 7), -3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-14, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-13, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-12, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-11, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-10, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-9, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-8, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-7, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-6, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-5, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-4, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-3, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-2, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-1, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(1, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(2, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(3, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(4, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(5, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(6, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(7, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(9, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(10, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(11, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(12, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(13, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(14, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(15, 7), 2); +} + +} // namespace wrapping_divide +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/tests/tests_base_wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/utility.hpp =================================================================== --- src/mpt/base/utility.hpp (nonexistent) +++ src/mpt/base/utility.hpp (working copy) @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_UTILITY_HPP +#define MPT_BASE_UTILITY_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_BEFORE(20) +#include "mpt/base/saturate_cast.hpp" +#endif + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::in_range; + +#else + +// Returns true iff Tdst can represent the value val. +// Use as if(mpt::in_range(-1)). +template +constexpr bool in_range(Tsrc val) { + return (static_cast(mpt::saturate_cast(val)) == val); +} + +#endif + + +#if MPT_CXX_AT_LEAST(23) + +using std::to_underlying; + +#else + +template +constexpr std::underlying_type_t to_underlying(T value) noexcept { + return static_cast::type>(value); +} + +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_UTILITY_HPP Property changes on: src/mpt/base/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/version.hpp =================================================================== --- src/mpt/base/version.hpp (nonexistent) +++ src/mpt/base/version.hpp (working copy) @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_VERSION_HPP +#define MPT_BASE_VERSION_HPP + + + +#define MPT_VERSION_MAJOR 0 +#define MPT_VERSION_MINOR 0 +#define MPT_VERSION_PATCH 0 +#define MPT_VERSION_BUILD 0 + + + +#endif // MPT_BASE_VERSION_HPP Property changes on: src/mpt/base/version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/wrapping_divide.hpp =================================================================== --- src/mpt/base/wrapping_divide.hpp (nonexistent) +++ src/mpt/base/wrapping_divide.hpp (working copy) @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_WRAPPING_DIVIDE_HPP +#define MPT_BASE_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Modulo with more intuitive behaviour for some contexts: +// Instead of being symmetrical around 0, the pattern for positive numbers is repeated in the negative range. +// For example, wrapping_modulo(-1, m) == (m - 1). +// Behaviour is undefined if m<=0. +template +constexpr auto wrapping_modulo(T x, M m) -> decltype(x % m) { + return (x >= 0) ? (x % m) : (m - 1 - ((-1 - x) % m)); +} + +template +constexpr auto wrapping_divide(T x, D d) -> decltype(x / d) { + return (x >= 0) ? (x / d) : (((x + 1) / d) - 1); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64.hpp =================================================================== --- src/mpt/binary/base64.hpp (nonexistent) +++ src/mpt/binary/base64.hpp (working copy) @@ -0,0 +1,136 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64_HPP +#define MPT_BINARY_BASE64_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64_parse_error : public std::runtime_error { +public: + base64_parse_error() + : std::runtime_error("invalid Base64 encoding") { + } +}; + + +inline constexpr std::array base64 = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('+'), MPT_UCHAR('/')}}; + + +template +inline mpt::ustring encode_base64(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + result.push_back(base64[(bits >> 6) & 0x3f]); + result.push_back(base64[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + if (padding > 1) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 6) & 0x3f]); + } + if (padding > 0) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) { + if (base64[i] == c) { + return i; + } + } + throw base64_parse_error(); +} + + +inline std::vector decode_base64(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * (src.length() / 4)); + uint32 bits = 0; + std::size_t chars = 0; + std::size_t padding = 0; + for (mpt::uchar c : src) { + bits <<= 6; + if (c == MPT_UCHAR('=')) { + padding++; + } else { + bits |= decode_base64_bits(c); + } + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + if (chars != 0) { + throw base64_parse_error(); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64_HPP Property changes on: src/mpt/binary/base64.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64url.hpp =================================================================== --- src/mpt/binary/base64url.hpp (nonexistent) +++ src/mpt/binary/base64url.hpp (working copy) @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64URL_HPP +#define MPT_BINARY_BASE64URL_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64url_parse_error : public std::runtime_error { +public: + base64url_parse_error() + : std::runtime_error("invalid Base64URL encoding") { + } +}; + + +inline constexpr std::array base64url = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('-'), MPT_UCHAR('_')}}; + +template +inline mpt::ustring encode_base64url(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + result.push_back(base64url[(bits >> 6) & 0x3f]); + result.push_back(base64url[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + if (padding <= 1) { + result.push_back(base64url[(bits >> 6) & 0x3f]); + } + if (padding <= 0) { + result.push_back(base64url[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64url_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) + { + if (base64url[i] == c) + { + return i; + } + } + throw base64url_parse_error(); +} + +inline std::vector decode_base64url(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * ((src.length() + 2) / 4)); + uint32 bits = 0; + std::size_t chars = 0; + for (mpt::uchar c : src) { + bits <<= 6; + bits |= decode_base64url_bits(c); + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + bits = 0; + chars = 0; + } + } + uint32 padding = 0; + if (chars != 0 && chars < 2) { + throw base64url_parse_error(); + } + while (chars != 0) { + bits <<= 6; + padding++; + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64URL_HPP Property changes on: src/mpt/binary/base64url.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/hex.hpp =================================================================== --- src/mpt/binary/hex.hpp (nonexistent) +++ src/mpt/binary/hex.hpp (working copy) @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_HEX_HPP +#define MPT_BINARY_HEX_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline constexpr std::array encode_nibble = { + {MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), + MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), + MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('A'), MPT_UCHAR('B'), + MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F')}}; + + +inline bool decode_byte(uint8 & byte, mpt::uchar c1, mpt::uchar c2) { + byte = 0; + if (MPT_UCHAR('0') <= c1 && c1 <= MPT_UCHAR('9')) { + byte += static_cast((c1 - MPT_UCHAR('0')) << 4); + } else if (MPT_UCHAR('A') <= c1 && c1 <= MPT_UCHAR('F')) { + byte += static_cast((c1 - MPT_UCHAR('A') + 10) << 4); + } else if (MPT_UCHAR('a') <= c1 && c1 <= MPT_UCHAR('f')) { + byte += static_cast((c1 - MPT_UCHAR('a') + 10) << 4); + } else { + return false; + } + if (MPT_UCHAR('0') <= c2 && c2 <= MPT_UCHAR('9')) { + byte += static_cast(c2 - MPT_UCHAR('0')); + } else if (MPT_UCHAR('A') <= c2 && c2 <= MPT_UCHAR('F')) { + byte += static_cast(c2 - MPT_UCHAR('A') + 10); + } else if (MPT_UCHAR('a') <= c2 && c2 <= MPT_UCHAR('f')) { + byte += static_cast(c2 - MPT_UCHAR('a') + 10); + } else { + return false; + } + return true; +} + + +template +inline mpt::ustring encode_hex(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(src.size() * 2); + for (std::byte byte : src) { + result.push_back(encode_nibble[(mpt::byte_cast(byte) & 0xf0) >> 4]); + result.push_back(encode_nibble[mpt::byte_cast(byte) & 0x0f]); + } + return result; +} + +inline std::vector decode_hex(const mpt::ustring & src) { + std::vector result; + result.reserve(src.size() / 2); + for (std::size_t i = 0; (i + 1) < src.size(); i += 2) { + uint8 byte = 0; + if (!decode_byte(byte, src[i], src[i + 1])) { + return result; + } + result.push_back(mpt::byte_cast(byte)); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_HEX_HPP Property changes on: src/mpt/binary/hex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/tests/tests_binary.hpp =================================================================== --- src/mpt/binary/tests/tests_binary.hpp (nonexistent) +++ src/mpt/binary/tests/tests_binary.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BINARY_HPP +#define MPT_BASE_TESTS_BINARY_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace binary { + +MPT_TEST_GROUP_INLINE("mpt/binary") +{ + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4=")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg==")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("bGVhc3VyZS4="))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("ZWFzdXJlLg=="))); + } + + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("bGVhc3VyZS4"))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("ZWFzdXJlLg"))); + } +} + +} // namespace binary +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BINARY_HPP Property changes on: src/mpt/binary/tests/tests_binary.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/libc.hpp =================================================================== --- src/mpt/check/libc.hpp (nonexistent) +++ src/mpt/check/libc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_LIBC_HPP +#define MPT_CHECK_LIBC_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#ifndef __STDC_CONSTANT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_CONSTANT_MACROS +MPT_WARNING("C stdlib does not provide constant macros. Please #define __STDC_CONSTANT_MACROS.") +#endif +#endif + +#ifndef __STDC_FORMAT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_FORMAT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_FORMAT_MACROS.") +#endif +#endif + +#ifndef __STDC_LIMIT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_LIMIT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_LIMIT_MACROS.") +#endif +#endif + +#ifndef _USE_MATH_DEFINES +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_USE_MATH_DEFINES +MPT_WARNING("C stdlib does not provide math constants. Please #define _USE_MATH_DEFINES.") +#endif +#endif + +#if !MPT_LIBC_MS +#if !defined(_FILE_OFFSET_BITS) +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_FILE_OFFSET_BITS +MPT_WARNING("C stdlib may not provide 64bit std::FILE access. Please #define _FILE_OFFSET_BITS=64.") +#endif +#endif +#endif + +#endif // MPT_CHECK_LIBC_HPP Property changes on: src/mpt/check/libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/mfc.hpp =================================================================== --- src/mpt/check/mfc.hpp (nonexistent) +++ src/mpt/check/mfc.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_MFC_HPP +#define MPT_CHECK_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" +#include "mpt/detect/mfc.hpp" + +#if MPT_DETECTED_MFC + +#ifndef _CSTRING_DISABLE_NARROW_WIDE_CONVERSION +#ifndef MPT_CHECK_MFC_IGNORE_WARNING_NO_CSTRING_DISABLE_NARROW_WIDE_CONVERSION +MPT_WARNING("MFC uses CString with automatic encoding conversions. Please #define _CSTRING_DISABLE_NARROW_WIDE_CONVERSION.") +#endif +#endif + +#endif // MPT_DETECTED_MFC + +#endif // MPT_CHECK_MFC_HPP Property changes on: src/mpt/check/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/windows.hpp =================================================================== --- src/mpt/check/windows.hpp (nonexistent) +++ src/mpt/check/windows.hpp (working copy) @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_WINDOWS_HPP +#define MPT_CHECK_WINDOWS_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#if MPT_OS_WINDOWS + +#ifndef UNICODE +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_UNICODE +MPT_WARNING("windows.h uses MBCS TCHAR. Please #define UNICODE.") +#endif +#endif + +#ifndef NOMINMAX +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_NOMINMAX +MPT_WARNING("windows.h defines min and max which conflicts with C++. Please #define NOMINMAX.") +#endif +#endif + +#endif // MPT_OS_WINDOWS + +#endif // MPT_CHECK_WINDOWS_HPP Property changes on: src/mpt/check/windows.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/crc.hpp =================================================================== --- src/mpt/crc/crc.hpp (nonexistent) +++ src/mpt/crc/crc.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRC_CRC_HPP +#define MPT_CRC_CRC_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class crc { + +public: + using self_type = crc; + using value_type = T; + using byte_type = uint8; + + static constexpr std::size_t size_bytes = sizeof(value_type); + static constexpr std::size_t size_bits = sizeof(value_type) * 8; + static constexpr value_type top_bit = static_cast(1) << ((sizeof(value_type) * 8) - 1); + +private: + template + static constexpr Tint reverse(Tint value) noexcept { + const std::size_t bits = sizeof(Tint) * 8; + Tint result = 0; + for (std::size_t i = 0; i < bits; ++i) { + result <<= 1; + result |= static_cast(value & 0x1); + value >>= 1; + } + return result; + } + + static constexpr value_type calculate_table_entry(byte_type pos) noexcept { + value_type value = 0; + value = (static_cast(reverseData ? reverse(pos) : pos) << (size_bits - 8)); + for (std::size_t bit = 0; bit < 8; ++bit) { + if (value & top_bit) { + value = (value << 1) ^ polynomial; + } else { + value = (value << 1); + } + } + value = (reverseData ? reverse(value) : value); + return value; + } + +private: + static constexpr std::array calculate_table() noexcept { + std::array t = mpt::init_array(value_type{}); + for (std::size_t i = 0; i < 256; ++i) { + t[i] = calculate_table_entry(static_cast(i)); + } + return t; + } + + static constexpr std::array table = calculate_table(); + +private: + constexpr value_type read_table(byte_type pos) const noexcept { + return table[pos]; + } + +private: + value_type value; + +public: + constexpr crc() noexcept + : value(initial) { + return; + } + + constexpr void processByte(byte_type byte) noexcept { + if constexpr (reverseData) { + value = (value >> 8) ^ read_table(static_cast((value & 0xff) ^ byte)); + } else { + value = (value << 8) ^ read_table(static_cast(((value >> (size_bits - 8)) & 0xff) ^ byte)); + } + } + + constexpr value_type result() const noexcept { + return (value ^ resultXOR); + } + +public: + constexpr operator value_type() const noexcept { + return result(); + } + + inline crc & process(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & process(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + inline crc & process(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + return *this; + } + + template + inline crc & process(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + inline crc & operator()(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & operator()(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + crc & operator()(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + operator()(*it); + } + return *this; + } + + template + inline crc & operator()(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + template + crc(InputIt beg, InputIt end) + : value(initial) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + } + + template + inline crc(const Container & data) + : value(initial) { + process(data.begin(), data.end()); + } +}; + +using crc16 = crc; +using crc32 = crc; +using crc32_ogg = crc; +using crc32c = crc; +using crc64_jones = crc; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRC_CRC_HPP Property changes on: src/mpt/crc/crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/tests/tests_crc.hpp =================================================================== --- src/mpt/crc/tests/tests_crc.hpp (nonexistent) +++ src/mpt/crc/tests/tests_crc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRC_HPP +#define MPT_BASE_TESTS_CRC_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crc { + +MPT_TEST_GROUP_INLINE("mpt/crc") +{ + MPT_TEST_EXPECT_EQUAL(mpt::crc32(std::string("123456789")), 0xCBF43926u); + MPT_TEST_EXPECT_EQUAL(mpt::crc32_ogg(std::string("123456789")), 0x89a1897fu); +} + +} // namespace crc +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRC_HPP Property changes on: src/mpt/crc/tests/tests_crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/exception.hpp =================================================================== --- src/mpt/crypto/exception.hpp (nonexistent) +++ src/mpt/crypto/exception.hpp (working copy) @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_EXCEPTION_HPP +#define MPT_CRYPTO_EXCEPTION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + +class exception + : public std::runtime_error { +private: + NTSTATUS m_Status; + +public: + exception(NTSTATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + NTSTATUS code() const noexcept { + return m_Status; + } +}; + + +class security_exception + : public std::runtime_error { +private: + SECURITY_STATUS m_Status; + +public: + security_exception(SECURITY_STATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + SECURITY_STATUS code() const noexcept { + return m_Status; + } +}; + + +inline void CheckNTSTATUS(NTSTATUS status) { + if (status >= 0) { + return; + } else if (status == STATUS_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw exception(status); + } +} + + +inline void CheckSECURITY_STATUS(SECURITY_STATUS status) { + if (status == ERROR_SUCCESS) { + return; + } else if (status == NTE_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw security_exception(status); + } +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_EXCEPTION_HPP Property changes on: src/mpt/crypto/exception.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/hash.hpp =================================================================== --- src/mpt/crypto/hash.hpp (nonexistent) +++ src/mpt/crypto/hash.hpp (working copy) @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_HASH_HPP +#define MPT_CRYPTO_HASH_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/crypto/exception.hpp" + +#include +#include + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + + +namespace hash { + + +struct hash_traits_md5 { + static constexpr std::size_t output_bits = 128; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_MD5_ALGORITHM; +}; + +struct hash_traits_sha1 { + static constexpr std::size_t output_bits = 160; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA1_ALGORITHM; +}; + +struct hash_traits_sha256 { + static constexpr std::size_t output_bits = 256; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA256_ALGORITHM; +}; + +struct hash_traits_sha512 { + static constexpr std::size_t output_bits = 512; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA512_ALGORITHM; +}; + +template +class hash_impl { + +public: + using traits = Traits; + + using result_type = std::array; + +private: + BCRYPT_ALG_HANDLE hAlg = NULL; + std::vector hashState; + std::vector hashResult; + BCRYPT_HASH_HANDLE hHash = NULL; + +private: + void init() { + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hAlg, traits::bcrypt_name, NULL, 0)); + if (!hAlg) { + throw exception(0); + } + DWORD hashStateSize = 0; + DWORD hashStateSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&hashStateSize, sizeof(DWORD), &hashStateSizeSize, 0)); + if (hashStateSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashStateSize <= 0) { + throw exception(0); + } + hashState.resize(hashStateSize); + DWORD hashResultSize = 0; + DWORD hashResultSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&hashResultSize, sizeof(DWORD), &hashResultSizeSize, 0)); + if (hashResultSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashResultSize <= 0) { + throw exception(0); + } + if (hashResultSize != mpt::extent()) { + throw exception(0); + } + hashResult.resize(hashResultSize); + CheckNTSTATUS(BCryptCreateHash(hAlg, &hHash, hashState.data(), hashStateSize, NULL, 0, 0)); + if (!hHash) { + throw exception(0); + } + } + + void cleanup() { + if (hHash) { + BCryptDestroyHash(hHash); + hHash = NULL; + } + hashResult.resize(0); + hashResult.shrink_to_fit(); + hashState.resize(0); + hashState.shrink_to_fit(); + if (hAlg) { + BCryptCloseAlgorithmProvider(hAlg, 0); + hAlg = NULL; + } + } + +public: + hash_impl() { + try { + init(); + } catch (...) { + cleanup(); + throw; + } + } + hash_impl(const hash_impl &) = delete; + hash_impl & operator=(const hash_impl &) = delete; + ~hash_impl() { + cleanup(); + } + +public: + hash_impl & process(mpt::const_byte_span data) { + CheckNTSTATUS(BCryptHashData(hHash, const_cast(mpt::byte_cast(data.data())), mpt::saturate_cast(data.size()), 0)); + return *this; + } + + result_type result() { + result_type res = mpt::init_array(std::byte{0}); + CheckNTSTATUS(BCryptFinishHash(hHash, hashResult.data(), mpt::saturate_cast(hashResult.size()), 0)); + assert(hashResult.size() == mpt::extent()); + std::transform(hashResult.begin(), hashResult.end(), res.begin(), [](BYTE b) { return mpt::as_byte(b); }); + return res; + } +}; + +using MD5 = hash_impl; +using SHA1 = hash_impl; +using SHA256 = hash_impl; +using SHA512 = hash_impl; + + +} // namespace hash + + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_HASH_HPP Property changes on: src/mpt/crypto/hash.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/jwk.hpp =================================================================== --- src/mpt/crypto/jwk.hpp (nonexistent) +++ src/mpt/crypto/jwk.hpp (working copy) @@ -0,0 +1,532 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_JWK_HPP +#define MPT_CRYPTO_JWK_HPP + + + +#include "mpt/base/alloc.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/json/json.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace crypto { + + + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +class keystore { +public: + enum class domain + { + system = 1, + user = 2, + }; + +private: + NCRYPT_PROV_HANDLE hProv = NULL; + domain ProvDomain = domain::user; + +private: + void cleanup() { + if (hProv) { + NCryptFreeObject(hProv); + hProv = NULL; + } + } + +public: + keystore(domain d) + : ProvDomain(d) { + try { + CheckSECURITY_STATUS(NCryptOpenStorageProvider(&hProv, MS_KEY_STORAGE_PROVIDER, 0)); + } catch (...) { + cleanup(); + throw; + } + } + ~keystore() { + return; + } + operator NCRYPT_PROV_HANDLE() { + return hProv; + } + keystore::domain store_domain() const { + return ProvDomain; + } +}; + + + +namespace asymmetric { + + + +class signature_verification_failed + : public std::runtime_error { +public: + signature_verification_failed() + : std::runtime_error("Signature Verification failed.") { + return; + } +}; + + + +inline std::vector jws_get_keynames(const mpt::ustring & jws_) { + std::vector result; + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + for (const auto & s : jws["signatures"]) { + result.push_back(s["header"]["kid"]); + } + return result; +} + + + +struct RSASSA_PSS_SHA512_traits { + using hash_type = mpt::crypto::hash::SHA512; + static constexpr const char * jwk_alg = "PS512"; +}; + + + +template +class rsassa_pss { + +public: + using hash_type = typename Traits::hash_type; + static constexpr const char * jwk_alg = Traits::jwk_alg; + + struct public_key_data { + + mpt::ustring name; + uint32 length = 0; + std::vector public_exp; + std::vector modulus; + + std::vector as_cng_blob() const { + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + rsakey_blob.Magic = BCRYPT_RSAPUBLIC_MAGIC; + rsakey_blob.BitLength = length; + rsakey_blob.cbPublicExp = mpt::saturate_cast(public_exp.size()); + rsakey_blob.cbModulus = mpt::saturate_cast(modulus.size()); + std::vector result(sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size() + modulus.size()); + std::memcpy(result.data(), &rsakey_blob, sizeof(BCRYPT_RSAKEY_BLOB)); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB), public_exp.data(), public_exp.size()); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size(), modulus.data(), modulus.size()); + return result; + } + + mpt::ustring as_jwk() const { + nlohmann::json json = nlohmann::json::object(); + json["kid"] = name; + json["kty"] = "RSA"; + json["alg"] = jwk_alg; + json["use"] = "sig"; + json["e"] = mpt::encode_base64url(mpt::as_span(public_exp)); + json["n"] = mpt::encode_base64url(mpt::as_span(modulus)); + return mpt::convert(mpt::common_encoding::utf8, json.dump()); + } + + static public_key_data from_jwk(const mpt::ustring & jwk) { + public_key_data result; + try { + nlohmann::json json = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk)); + if (json["kty"] != "RSA") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["alg"] != jwk_alg) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["use"] != "sig") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + result.name = json["kid"].get(); + result.public_exp = mpt::decode_base64url(json["e"]); + result.modulus = mpt::decode_base64url(json["n"]); + result.length = mpt::saturate_cast(result.modulus.size() * 8); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (...) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + return result; + } + + static public_key_data from_cng_blob(const mpt::ustring & name, const std::vector & blob) { + public_key_data result; + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + if (blob.size() < sizeof(BCRYPT_RSAKEY_BLOB)) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + std::memcpy(&rsakey_blob, blob.data(), sizeof(BCRYPT_RSAKEY_BLOB)); + if (rsakey_blob.Magic != BCRYPT_RSAPUBLIC_MAGIC) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + if (blob.size() != sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + result.name = name; + result.length = rsakey_blob.BitLength; + result.public_exp = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB), blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp); + result.modulus = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp, blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus); + return result; + } + }; + + + + static std::vector parse_jwk_set(const mpt::ustring & jwk_set_) { + std::vector result; + nlohmann::json jwk_set = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk_set_)); + for (const auto & k : jwk_set["keys"]) { + try { + result.push_back(public_key_data::from_jwk(mpt::convert(mpt::common_encoding::utf8, k.dump()))); + } catch (...) { + // nothing + } + } + return result; + } + + + + class public_key { + + private: + mpt::ustring name; + BCRYPT_ALG_HANDLE hSignAlg = NULL; + BCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + BCryptDestroyKey(hKey); + hKey = NULL; + } + if (hSignAlg) { + BCryptCloseAlgorithmProvider(hSignAlg, 0); + hSignAlg = NULL; + } + } + + public: + public_key(const public_key_data & data) { + try { + name = data.name; + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0)); + std::vector blob = data.as_cng_blob(); + CheckNTSTATUS(BCryptImportKeyPair(hSignAlg, NULL, BCRYPT_RSAPUBLIC_BLOB, &hKey, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), 0)); + } catch (...) { + cleanup(); + throw; + } + } + + public_key(const public_key & other) + : public_key(other.get_public_key_data()) { + return; + } + + public_key & operator=(const public_key & other) { + if (&other == this) { + return *this; + } + public_key copy(other); + { + using std::swap; + swap(copy.name, name); + swap(copy.hSignAlg, hSignAlg); + swap(copy.hKey, hKey); + } + return *this; + } + + ~public_key() { + cleanup(); + } + + mpt::ustring get_name() const { + return name; + } + + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + void verify_hash(typename hash_type::result_type hash, std::vector signature) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + NTSTATUS result = BCryptVerifySignature(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(signature.data()), mpt::saturate_cast(signature.size()), BCRYPT_PAD_PSS); + if (result == 0x00000000 /*STATUS_SUCCESS*/) { + return; + } + if (result == 0xC000A000 /*STATUS_INVALID_SIGNATURE*/) { + throw signature_verification_failed(); + } + CheckNTSTATUS(result); + throw signature_verification_failed(); + } + + void verify(mpt::const_byte_span payload, const std::vector & signature) { + verify_hash(hash_type().process(payload).result(), signature); + } + + std::vector jws_verify(const mpt::ustring & jws_) { + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + std::vector payload = mpt::decode_base64url(jws["payload"]); + nlohmann::json jsignature = nlohmann::json::object(); + bool sigfound = false; + for (const auto & s : jws["signatures"]) { + if (s["header"]["kid"] == mpt::convert(mpt::common_encoding::utf8, name)) { + jsignature = s; + sigfound = true; + } + } + if (!sigfound) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(jsignature["protected"]); + std::vector signature = mpt::decode_base64url(jsignature["signature"]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + + std::vector jws_compact_verify(const mpt::ustring & jws) { + std::vector parts = mpt::split(jws, MPT_USTRING(".")); + if (parts.size() != 3) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(parts[0]); + std::vector payload = mpt::decode_base64url(parts[1]); + std::vector signature = mpt::decode_base64url(parts[2]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + }; + + + + static inline void jws_verify_at_least_one(std::vector & keys, const std::vector & expectedPayload, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + bool sigchecked = false; + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + if (expectedPayload != key.jws_verify(signature)) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + sigchecked = true; + } + } + } + if (!sigchecked) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + } + + + + static inline std::vector jws_verify_at_least_one(std::vector & keys, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + return key.jws_verify(signature); + } + } + } + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + + + + class managed_private_key { + + private: + mpt::ustring name; + NCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + NCryptFreeObject(hKey); + hKey = NULL; + } + } + + public: + managed_private_key() = delete; + + managed_private_key(const managed_private_key &) = delete; + + managed_private_key & operator=(const managed_private_key &) = delete; + + managed_private_key(keystore & keystore) { + try { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, NULL, 0, 0)); + } catch (...) { + cleanup(); + throw; + } + } + + managed_private_key(keystore & keystore, const mpt::ustring & name_) + : name(name_) { + try { + SECURITY_STATUS openKeyStatus = NCryptOpenKey(keystore, &hKey, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0)); + if (openKeyStatus == NTE_BAD_KEYSET) { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0))); + DWORD length = mpt::saturate_cast(keysize); + CheckSECURITY_STATUS(NCryptSetProperty(hKey, NCRYPT_LENGTH_PROPERTY, (PBYTE)&length, mpt::saturate_cast(sizeof(DWORD)), 0)); + CheckSECURITY_STATUS(NCryptFinalizeKey(hKey, 0)); + } else { + CheckSECURITY_STATUS(openKeyStatus); + } + } catch (...) { + cleanup(); + throw; + } + } + + ~managed_private_key() { + cleanup(); + } + + void destroy() { + CheckSECURITY_STATUS(NCryptDeleteKey(hKey, 0)); + name = mpt::ustring(); + hKey = NULL; + } + + public: + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + std::vector sign_hash(typename hash_type::result_type hash) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), NULL, 0, &bytes, BCRYPT_PAD_PSS)); + std::vector result(bytes); + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(result.data()), mpt::saturate_cast(result.size()), &bytes, BCRYPT_PAD_PSS)); + return result; + } + + std::vector sign(mpt::const_byte_span payload) { + return sign_hash(hash_type().process(payload).result()); + } + + mpt::ustring jws_compact_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + return mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(signature)); + } + + mpt::ustring jws_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + nlohmann::json header = nlohmann::json::object(); + header["kid"] = name; + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + nlohmann::json jws = nlohmann::json::object(); + jws["payload"] = mpt::encode_base64url(payload); + jws["signatures"] = nlohmann::json::array(); + nlohmann::json jsignature = nlohmann::json::object(); + jsignature["header"] = header; + jsignature["protected"] = mpt::encode_base64url(mpt::as_span(protectedheaderstring)); + jsignature["signature"] = mpt::encode_base64url(mpt::as_span(signature)); + jws["signatures"].push_back(jsignature); + return mpt::convert(mpt::common_encoding::utf8, jws.dump()); + } + }; + +}; // class rsassa_pss + + + +} // namespace asymmetric + + + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +} // namespace crypto + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_JWK_HPP Property changes on: src/mpt/crypto/jwk.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/tests/tests_crypto.hpp =================================================================== --- src/mpt/crypto/tests/tests_crypto.hpp (nonexistent) +++ src/mpt/crypto/tests/tests_crypto.hpp (working copy) @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRYPTO_HPP +#define MPT_BASE_TESTS_CRYPTO_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crypto { + +MPT_TEST_GROUP_INLINE("mpt/crypto") +{ +#if MPT_OS_WINDOWS + mpt::crypto::hash::SHA512::result_type sha512_abc{ + std::byte{0xdd}, std::byte{0xaf}, std::byte{0x35}, std::byte{0xa1}, std::byte{0x93}, std::byte{0x61}, std::byte{0x7a}, std::byte{0xba}, + std::byte{0xcc}, std::byte{0x41}, std::byte{0x73}, std::byte{0x49}, std::byte{0xae}, std::byte{0x20}, std::byte{0x41}, std::byte{0x31}, + std::byte{0x12}, std::byte{0xe6}, std::byte{0xfa}, std::byte{0x4e}, std::byte{0x89}, std::byte{0xa9}, std::byte{0x7e}, std::byte{0xa2}, + std::byte{0x0a}, std::byte{0x9e}, std::byte{0xee}, std::byte{0xe6}, std::byte{0x4b}, std::byte{0x55}, std::byte{0xd3}, std::byte{0x9a}, + std::byte{0x21}, std::byte{0x92}, std::byte{0x99}, std::byte{0x2a}, std::byte{0x27}, std::byte{0x4f}, std::byte{0xc1}, std::byte{0xa8}, + std::byte{0x36}, std::byte{0xba}, std::byte{0x3c}, std::byte{0x23}, std::byte{0xa3}, std::byte{0xfe}, std::byte{0xeb}, std::byte{0xbd}, + std::byte{0x45}, std::byte{0x4d}, std::byte{0x44}, std::byte{0x23}, std::byte{0x64}, std::byte{0x3c}, std::byte{0xe8}, std::byte{0x0e}, + std::byte{0x2a}, std::byte{0x9a}, std::byte{0xc9}, std::byte{0x4f}, std::byte{0xa5}, std::byte{0x4c}, std::byte{0xa4}, std::byte{0x9f}}; + MPT_TEST_EXPECT_EQUAL(mpt::crypto::hash::SHA512().process(mpt::byte_cast(mpt::as_span(std::string("abc")))).result(), sha512_abc); + +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + { + + std::vector data = {std::byte{0x11}, std::byte{0x12}, std::byte{0x13}, std::byte{0x14}}; + + mpt::crypto::keystore keystore(mpt::crypto::keystore::domain::user); + + mpt::crypto::asymmetric::rsassa_pss<>::managed_private_key key(keystore, U_("OpenMPT Test Key 1")); + + auto publickeydata = key.get_public_key_data(); + + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk{publickeydata}; + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk_copy{pk}; + mpt::ustring jwk = publickeydata.as_jwk(); + + std::vector signature = key.sign(mpt::as_span(data)); + mpt::ustring jws = key.jws_sign(mpt::as_span(data)); + mpt::ustring jws_compact = key.jws_compact_sign(mpt::as_span(data)); + + try { + pk.verify(mpt::as_span(data), signature); + auto verifieddata1 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_verify(jws); + auto verifieddata2 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_compact_verify(jws_compact); + MPT_TEST_EXPECT_EQUAL(true, true); + MPT_TEST_EXPECT_EQUAL(data, verifieddata1); + MPT_TEST_EXPECT_EQUAL(data, verifieddata2); + } catch (const mpt::crypto::asymmetric::signature_verification_failed &) { + MPT_TEST_EXPECT_EQUAL(true, false); + } + + key.destroy(); + } + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON +} + + +} // namespace crypto +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRYPTO_HPP Property changes on: src/mpt/crypto/tests/tests_crypto.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/mfc.hpp =================================================================== --- src/mpt/detect/mfc.hpp (nonexistent) +++ src/mpt/detect/mfc.hpp (working copy) @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_MFC_HPP +#define MPT_DETECT_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" + +#if defined(MPT_WITH_MFC) +#if !__has_include() +#error "MPT_WITH_MFC defined but not found." +#endif +#if !MPT_COMPILER_GENERIC && !MPT_COMPILER_MSVC && !MPT_COMPILER_CLANG +MPT_WARNING("Using MFC with unsupported compiler.") +#endif +#define MPT_DETECTED_MFC 1 +#else +#define MPT_DETECTED_MFC 0 +#endif + +#endif // MPT_DETECT_MFC_HPP Property changes on: src/mpt/detect/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/nlohmann_json.hpp =================================================================== --- src/mpt/detect/nlohmann_json.hpp (nonexistent) +++ src/mpt/detect/nlohmann_json.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_NLOHMANN_JSON_HPP +#define MPT_DETECT_NLOHMANN_JSON_HPP + +#if defined(MPT_WITH_NLOHMANN_JSON) +#if !__has_include() +#error "MPT_WITH_NLOHMANN_JSON defined but not found." +#endif +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#if __has_include() +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#define MPT_DETECTED_NLOHMANN_JSON 0 +#endif +#endif + +#endif // MPT_DETECT_NLOHMANN_JSON_HPP Property changes on: src/mpt/detect/nlohmann_json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/floatingpoint.hpp =================================================================== --- src/mpt/endian/floatingpoint.hpp (nonexistent) +++ src/mpt/endian/floatingpoint.hpp (working copy) @@ -0,0 +1,441 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/floatingpoint.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// 1.0f --> 0x3f800000u +MPT_FORCEINLINE uint32 EncodeIEEE754binary32(float32 f) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + float m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0f) { + uint32 expo = 0u; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = 0u; + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } else { + uint32 expo = e + 127 - 1; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = static_cast(std::fabs(std::ldexp(m, 24))); + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } + } +} + +MPT_FORCEINLINE uint64 EncodeIEEE754binary64(float64 f) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + double m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0) { + uint64 expo = 0u; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = 0u; + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } else { + uint64 expo = static_cast(e) + 1023 - 1; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = static_cast(std::fabs(std::ldexp(m, 53))); + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } + } +} + +// 0x3f800000u --> 1.0f +MPT_FORCEINLINE float32 DecodeIEEE754binary32(uint32 i) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(i); + } else { + uint32 mant = (i & 0x007fffffu) >> 0; + uint32 expo = (i & 0x7f800000u) >> 23; + uint32 sign = (i & 0x80000000u) >> 31; + if (expo == 0) { + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x00800000u; + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } + } +} + +MPT_FORCEINLINE float64 DecodeIEEE754binary64(uint64 i) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(i); + } else { + uint64 mant = (i & 0x000fffffffffffffull) >> 0; + uint64 expo = (i & 0x7ff0000000000000ull) >> 52; + uint64 sign = (i & 0x8000000000000000ull) >> 63; + if (expo == 0) { + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x0010000000000000ull; + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } + } +} + + +// template parameters are byte indices corresponding to the individual bytes of iee754 in memory +template +struct IEEE754binary32Emulated { +public: + using self_t = IEEE754binary32Emulated; + std::byte bytes[4]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary32Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary32Emulated(float32 f) { + SetInt32(EncodeIEEE754binary32(f)); + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + } + MPT_FORCEINLINE operator float32() const { + return DecodeIEEE754binary32(GetInt32()); + } + MPT_FORCEINLINE self_t & SetInt32(uint32 i) { + bytes[hihi] = static_cast(i >> 24); + bytes[hilo] = static_cast(i >> 16); + bytes[lohi] = static_cast(i >> 8); + bytes[lolo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return 0u + | (static_cast(bytes[hihi]) << 24) + | (static_cast(bytes[hilo]) << 16) + | (static_cast(bytes[lohi]) << 8) + | (static_cast(bytes[lolo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; +template +struct IEEE754binary64Emulated { +public: + using self_t = IEEE754binary64Emulated; + std::byte bytes[8]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary64Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary64Emulated(float64 f) { + SetInt64(EncodeIEEE754binary64(f)); + } + MPT_FORCEINLINE explicit IEEE754binary64Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + bytes[4] = b4; + bytes[5] = b5; + bytes[6] = b6; + bytes[7] = b7; + } + MPT_FORCEINLINE operator float64() const { + return DecodeIEEE754binary64(GetInt64()); + } + MPT_FORCEINLINE self_t & SetInt64(uint64 i) { + bytes[hihihi] = static_cast(i >> 56); + bytes[hihilo] = static_cast(i >> 48); + bytes[hilohi] = static_cast(i >> 40); + bytes[hilolo] = static_cast(i >> 32); + bytes[lohihi] = static_cast(i >> 24); + bytes[lohilo] = static_cast(i >> 16); + bytes[lolohi] = static_cast(i >> 8); + bytes[lololo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return 0u + | (static_cast(bytes[hihihi]) << 56) + | (static_cast(bytes[hihilo]) << 48) + | (static_cast(bytes[hilohi]) << 40) + | (static_cast(bytes[hilolo]) << 32) + | (static_cast(bytes[lohihi]) << 24) + | (static_cast(bytes[lohilo]) << 16) + | (static_cast(bytes[lolohi]) << 8) + | (static_cast(bytes[lololo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3] + && bytes[4] == cmp.bytes[4] + && bytes[5] == cmp.bytes[5] + && bytes[6] == cmp.bytes[6] + && bytes[7] == cmp.bytes[7]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; + +using IEEE754binary32EmulatedBE = IEEE754binary32Emulated<0, 1, 2, 3>; +using IEEE754binary32EmulatedLE = IEEE754binary32Emulated<3, 2, 1, 0>; +using IEEE754binary64EmulatedBE = IEEE754binary64Emulated<0, 1, 2, 3, 4, 5, 6, 7>; +using IEEE754binary64EmulatedLE = IEEE754binary64Emulated<7, 6, 5, 4, 3, 2, 1, 0>; + +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedLE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedLE &) { + return true; +} + +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(8)); + +template +struct IEEE754binary32Native { +public: + float32 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return static_cast(EncodeIEEE754binary32(value) >> (i * 8)); + } + if constexpr (endian == mpt::endian::big) { + return static_cast(EncodeIEEE754binary32(value) >> ((4 - 1 - i) * 8)); + } + } + IEEE754binary32Native() = default; + MPT_FORCEINLINE explicit IEEE754binary32Native(float32 f) { + value = f; + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 24) | (static_cast(b1) << 16) | (static_cast(b2) << 8) | (static_cast(b3) << 0)); + } + } + MPT_FORCEINLINE operator float32() const { + return value; + } + MPT_FORCEINLINE IEEE754binary32Native & SetInt32(uint32 i) { + value = DecodeIEEE754binary32(i); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return EncodeIEEE754binary32(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary32Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary32Native & cmp) const { + return value != cmp.value; + } +}; + +template +struct IEEE754binary64Native { +public: + float64 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> (i * 8))); + } + if constexpr (endian == mpt::endian::big) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> ((8 - 1 - i) * 8))); + } + } + IEEE754binary64Native() = default; + MPT_FORCEINLINE explicit IEEE754binary64Native(float64 f) { + value = f; + } + MPT_FORCEINLINE explicit IEEE754binary64Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24) | (static_cast(b4) << 32) | (static_cast(b5) << 40) | (static_cast(b6) << 48) | (static_cast(b7) << 56)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 56) | (static_cast(b1) << 48) | (static_cast(b2) << 40) | (static_cast(b3) << 32) | (static_cast(b4) << 24) | (static_cast(b5) << 16) | (static_cast(b6) << 8) | (static_cast(b7) << 0)); + } + } + MPT_FORCEINLINE operator float64() const { + return value; + } + MPT_FORCEINLINE IEEE754binary64Native & SetInt64(uint64 i) { + value = DecodeIEEE754binary64(i); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return EncodeIEEE754binary64(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary64Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary64Native & cmp) const { + return value != cmp.value; + } +}; + +static_assert((sizeof(IEEE754binary32Native<>) == 4)); +static_assert((sizeof(IEEE754binary64Native<>) == 8)); + +constexpr bool declare_binary_safe(const IEEE754binary32Native<> &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64Native<> &) noexcept { + return true; +} + +template +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32Native<>; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64Native<>; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32Native<>; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64Native<>; +}; + +using IEEE754binary32LE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64BE; + +static_assert(sizeof(IEEE754binary32LE) == 4); +static_assert(sizeof(IEEE754binary32BE) == 4); +static_assert(sizeof(IEEE754binary64LE) == 8); +static_assert(sizeof(IEEE754binary64BE) == 8); + + +// unaligned + +using float32le = IEEE754binary32EmulatedLE; +using float32be = IEEE754binary32EmulatedBE; +using float64le = IEEE754binary64EmulatedLE; +using float64be = IEEE754binary64EmulatedBE; + +static_assert(sizeof(float32le) == 4); +static_assert(sizeof(float32be) == 4); +static_assert(sizeof(float64le) == 8); +static_assert(sizeof(float64be) == 8); + + +// potentially aligned + +using float32le_fast = IEEE754binary32LE; +using float32be_fast = IEEE754binary32BE; +using float64le_fast = IEEE754binary64LE; +using float64be_fast = IEEE754binary64BE; + +static_assert(sizeof(float32le_fast) == 4); +static_assert(sizeof(float32be_fast) == 4); +static_assert(sizeof(float64le_fast) == 8); +static_assert(sizeof(float64be_fast) == 8); + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/integer.hpp =================================================================== --- src/mpt/endian/integer.hpp (nonexistent) +++ src/mpt/endian/integer.hpp (working copy) @@ -0,0 +1,487 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/bit.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include +#include +#include + +#if MPT_COMPILER_MSVC +#include +#endif + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct BigEndian_tag { + static constexpr mpt::endian endian = mpt::endian::big; +}; + +struct LittleEndian_tag { + static constexpr mpt::endian endian = mpt::endian::little; +}; + + + +constexpr inline uint16 constexpr_bswap16(uint16 x) noexcept { + return uint16(0) + | ((x >> 8) & 0x00FFu) + | ((x << 8) & 0xFF00u); +} + +constexpr inline uint32 constexpr_bswap32(uint32 x) noexcept { + return uint32(0) + | ((x & 0x000000FFu) << 24) + | ((x & 0x0000FF00u) << 8) + | ((x & 0x00FF0000u) >> 8) + | ((x & 0xFF000000u) >> 24); +} + +constexpr inline uint64 constexpr_bswap64(uint64 x) noexcept { + return uint64(0) + | (((x >> 0) & 0xffull) << 56) + | (((x >> 8) & 0xffull) << 48) + | (((x >> 16) & 0xffull) << 40) + | (((x >> 24) & 0xffull) << 32) + | (((x >> 32) & 0xffull) << 24) + | (((x >> 40) & 0xffull) << 16) + | (((x >> 48) & 0xffull) << 8) + | (((x >> 56) & 0xffull) << 0); +} + +#if MPT_COMPILER_GCC +#define MPT_bswap16 __builtin_bswap16 +#define MPT_bswap32 __builtin_bswap32 +#define MPT_bswap64 __builtin_bswap64 +#elif MPT_COMPILER_MSVC +#define MPT_bswap16 _byteswap_ushort +#define MPT_bswap32 _byteswap_ulong +#define MPT_bswap64 _byteswap_uint64 +#endif + +// No intrinsics available +#ifndef MPT_bswap16 +#define MPT_bswap16(x) mpt::constexpr_bswap16(x) +#endif +#ifndef MPT_bswap32 +#define MPT_bswap32(x) mpt::constexpr_bswap32(x) +#endif +#ifndef MPT_bswap64 +#define MPT_bswap64(x) mpt::constexpr_bswap64(x) +#endif + + + +template +MPT_CONSTEXPRINLINE std::array EndianEncode(T val) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + unsigned_base_type uval = static_cast(val); + std::array data{}; + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[(sizeof(base_type) - 1) - i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } + return data; +} + +template +MPT_CONSTEXPRINLINE T EndianDecode(std::array data) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + base_type val = base_type(); + unsigned_base_type uval = unsigned_base_type(); + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[i])) << (i * 8); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[(sizeof(base_type) - 1) - i])) << (i * 8); + } + } + val = static_cast(uval); + return val; +} + + +MPT_CONSTEXPR20_FUN uint64 SwapBytesImpl(uint64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN uint32 SwapBytesImpl(uint32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN uint16 SwapBytesImpl(uint16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +MPT_CONSTEXPR20_FUN int64 SwapBytesImpl(int64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN int32 SwapBytesImpl(int32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN int16 SwapBytesImpl(int16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +// Do NOT remove these overloads, even if they seem useless. +// We do not want risking to extend 8bit integers to int and then +// endian-converting and casting back to int. +// Thus these overloads. + +MPT_CONSTEXPR20_FUN uint8 SwapBytesImpl(uint8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN int8 SwapBytesImpl(int8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN char SwapBytesImpl(char value) noexcept { + return value; +} + +#undef MPT_bswap16 +#undef MPT_bswap32 +#undef MPT_bswap64 + + + +// On-disk integer types with defined endianness and no alignemnt requirements +// Note: To easily debug module loaders (and anything else that uses this +// wrapper struct), you can use the Debugger Visualizers available in +// build/vs/debug/ to conveniently view the wrapped contents. + +template +struct packed { +public: + using base_type = T; + using endian_type = Tendian; + +public: + std::array data; + +public: + MPT_CONSTEXPR20_FUN void set(base_type val) noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * (sizeof(base_type) - 1 - i))) & 0xffu); + } + } else { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * i)) & 0xffu); + } + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + std::memcpy(data.data(), &val, sizeof(val)); + } else { + using unsigned_base_type = typename std::make_unsigned::type; + data = EndianEncode(val); + } + } + } + MPT_CONSTEXPR20_FUN base_type get() const noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * (sizeof(base_type) - 1 - i)); + } + return static_cast(uval); + } else { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * i); + } + return static_cast(uval); + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + base_type val = base_type(); + std::memcpy(&val, data.data(), sizeof(val)); + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + return val; + } else { + using unsigned_base_type = typename std::make_unsigned::type; + return EndianDecode(data); + } + } + } + MPT_CONSTEXPR20_FUN packed & operator=(const base_type & val) noexcept { + set(val); + return *this; + } + MPT_CONSTEXPR20_FUN operator base_type() const noexcept { + return get(); + } + +public: + MPT_CONSTEXPR20_FUN packed & operator&=(base_type val) noexcept { + set(get() & val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator|=(base_type val) noexcept { + set(get() | val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator^=(base_type val) noexcept { + set(get() ^ val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator+=(base_type val) noexcept { + set(get() + val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator-=(base_type val) noexcept { + set(get() - val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator*=(base_type val) noexcept { + set(get() * val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator/=(base_type val) noexcept { + set(get() / val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator%=(base_type val) noexcept { + set(get() % val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator++() noexcept { // prefix + set(get() + 1); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator--() noexcept { // prefix + set(get() - 1); + return *this; + } + MPT_CONSTEXPR20_FUN base_type operator++(int) noexcept { // postfix + base_type old = get(); + set(old + 1); + return old; + } + MPT_CONSTEXPR20_FUN base_type operator--(int) noexcept { // postfix + base_type old = get(); + set(old - 1); + return old; + } +}; + +using int64le = packed; +using int32le = packed; +using int16le = packed; +using int8le = packed; +using uint64le = packed; +using uint32le = packed; +using uint16le = packed; +using uint8le = packed; + +using int64be = packed; +using int32be = packed; +using int16be = packed; +using int8be = packed; +using uint64be = packed; +using uint32be = packed; +using uint16be = packed; +using uint8be = packed; + +constexpr bool declare_binary_safe(const int64le &) { + return true; +} +constexpr bool declare_binary_safe(const int32le &) { + return true; +} +constexpr bool declare_binary_safe(const int16le &) { + return true; +} +constexpr bool declare_binary_safe(const int8le &) { + return true; +} +constexpr bool declare_binary_safe(const uint64le &) { + return true; +} +constexpr bool declare_binary_safe(const uint32le &) { + return true; +} +constexpr bool declare_binary_safe(const uint16le &) { + return true; +} +constexpr bool declare_binary_safe(const uint8le &) { + return true; +} + +constexpr bool declare_binary_safe(const int64be &) { + return true; +} +constexpr bool declare_binary_safe(const int32be &) { + return true; +} +constexpr bool declare_binary_safe(const int16be &) { + return true; +} +constexpr bool declare_binary_safe(const int8be &) { + return true; +} +constexpr bool declare_binary_safe(const uint64be &) { + return true; +} +constexpr bool declare_binary_safe(const uint32be &) { + return true; +} +constexpr bool declare_binary_safe(const uint16be &) { + return true; +} +constexpr bool declare_binary_safe(const uint8be &) { + return true; +} + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + + + +template +struct make_le { + using type = packed::type, LittleEndian_tag>; +}; + +template +struct make_be { + using type = packed::type, BigEndian_tag>; +}; + +template +MPT_CONSTEXPR20_FUN auto as_le(T v) noexcept -> typename mpt::make_le::type>::type { + typename mpt::make_le::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN auto as_be(T v) noexcept -> typename mpt::make_be::type>::type { + typename mpt::make_be::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN Tpacked as_endian(typename Tpacked::base_type v) noexcept { + Tpacked res{}; + res = v; + return res; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +namespace std { +template +class numeric_limits> : public std::numeric_limits { }; +template +class numeric_limits> : public std::numeric_limits { }; +} // namespace std + + + +#endif // MPT_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_floatingpoint.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_floatingpoint.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_floatingpoint.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/floatingpoint.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace floatingpoint { + +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +{ + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(1.0f), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(-1.0f), 0xbf800000u); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x41840000u), 16.5f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3faa0000u), 1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbfaa0000u), -1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbf800000u), -1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f), IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f), IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00))); + + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(1.0), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(-1.0), 0xbff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x4030800000000000ull), 16.5); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3FF5400000000000ull), 1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xBFF5400000000000ull), -1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xbff0000000000000ull), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0), IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0), IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00))); +} + +} // namespace floatingpoint +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/tests/tests_endian_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_integer.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_integer.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_integer.hpp (working copy) @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace integer { + +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +{ + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + struct test_endian_constexpr { + static MPT_CONSTEXPR20_FUN int32le test(uint32 x) { + int32le foo{}; + foo = x; + return foo; + } + }; + + MPT_CONSTEXPR20_VAR int32le foo = test_endian_constexpr::test(23); + static_cast(foo); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint8(0x12)), 0x12); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint16(0x1234)), 0x3412); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint32(0x12345678u)), 0x78563412u); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint64(0x123456789abcdef0ull)), 0xf0debc9a78563412ull); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int8(std::numeric_limits::min())), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int16(std::numeric_limits::min())), int16(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int32(std::numeric_limits::min())), int32(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int64(std::numeric_limits::min())), int64(0x80)); + + // Packed integers with defined endianness + { + int8le le8; + le8.set(-128); + int8be be8; + be8.set(-128); + MPT_TEST_EXPECT_EQUAL(le8, -128); + MPT_TEST_EXPECT_EQUAL(be8, -128); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le8, "\x80", 1), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be8, "\x80", 1), 0); + int16le le16; + le16.set(0x1234); + int16be be16; + be16.set(0x1234); + MPT_TEST_EXPECT_EQUAL(le16, 0x1234); + MPT_TEST_EXPECT_EQUAL(be16, 0x1234); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le16, "\x34\x12", 2), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be16, "\x12\x34", 2), 0); + uint32le le32; + le32.set(0xFFEEDDCCu); + uint32be be32; + be32.set(0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(le32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(be32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le32, "\xCC\xDD\xEE\xFF", 4), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be32, "\xFF\xEE\xDD\xCC", 4), 0); + uint64le le64; + le64.set(0xDEADC0DE15C0FFEEull); + uint64be be64; + be64.set(0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(le64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(be64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le64, "\xEE\xFF\xC0\x15\xDE\xC0\xAD\xDE", 8), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be64, "\xDE\xAD\xC0\xDE\x15\xC0\xFF\xEE", 8), 0); + } +} + +} // namespace integer +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/tests/tests_endian_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/environment/environment.hpp =================================================================== --- src/mpt/environment/environment.hpp (nonexistent) +++ src/mpt/environment/environment.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENVIRONMENT_ENVIRONMENT_HPP +#define MPT_ENVIRONMENT_ENVIRONMENT_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/system_error/system_error.hpp" + +#include +#if MPT_OS_WINDOWS +#if defined(UNICODE) && !MPT_OS_WINDOWS_WINRT +#include +#endif // !MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::optional getenv(const mpt::ustring & env_var) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT + MPT_UNUSED(env_var); + return std::nullopt; +#elif MPT_OS_WINDOWS && defined(UNICODE) + std::vector buf(32767); + DWORD size = GetEnvironmentVariable(mpt::convert(env_var).c_str(), buf.data(), 32767); + if (size == 0) { + mpt::windows::ExpectError(ERROR_ENVVAR_NOT_FOUND); + return std::nullopt; + } + return mpt::convert(buf.data()); +#else + const char * val = std::getenv(mpt::convert(mpt::environment_encoding, env_var).c_str()); + if (!val) { + return std::nullopt; + } + return mpt::convert(mpt::environment_encoding, val); +#endif +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENVIRONMENT_ENVIRONMENT_HPP Property changes on: src/mpt/environment/environment.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/exception_text/exception_text.hpp =================================================================== --- src/mpt/exception_text/exception_text.hpp (nonexistent) +++ src/mpt/exception_text/exception_text.hpp (working copy) @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP +#define MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline Tstring get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return mpt::convert(mpt::exception_string{e.what()}); + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return mpt::convert(mpt::source_string{typeid(e).name()}); + } else { + return mpt::convert(mpt::source_string{"unknown exception name"}); + } +} + +template <> +inline std::string get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return std::string{e.what()}; + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return std::string{typeid(e).name()}; + } else { + return std::string{"unknown exception name"}; + } +} + + +template +inline Tstring get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return mpt::convert(mpt::source_string{"unknown exception"}); + } +} + +template <> +inline std::string get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return std::string{"unknown exception"}; + } +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP Property changes on: src/mpt/exception_text/exception_text.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_floatingpoint.hpp =================================================================== --- src/mpt/format/default_floatingpoint.hpp (nonexistent) +++ src/mpt/format/default_floatingpoint.hpp (working copy) @@ -0,0 +1,91 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP +#define MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" + +#if MPT_MSVC_AT_LEAST(2019, 4) || MPT_GCC_AT_LEAST(11, 1, 0) +#define MPT_FORMAT_CXX17_FLOAT 1 +#else +#define MPT_FORMAT_CXX17_FLOAT 0 +#endif + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} +#endif + + +#if !MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + s << std::setprecision(std::numeric_limits::max_digits10) << x; + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP Property changes on: src/mpt/format/default_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_formatter.hpp =================================================================== --- src/mpt/format/default_formatter.hpp (nonexistent) +++ src/mpt/format/default_formatter.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_FORMATTER_HPP +#define MPT_FORMAT_DEFAULT_FORMATTER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/default_integer.hpp" +#include "mpt/format/default_string.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct default_formatter { + template + static inline Tstring format(const T & value) { + using namespace mpt; + return format_value_default(value); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_FORMATTER_HPP Property changes on: src/mpt/format/default_formatter.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_integer.hpp =================================================================== --- src/mpt/format/default_integer.hpp (nonexistent) +++ src/mpt/format/default_integer.hpp (working copy) @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_INTEGER_HPP +#define MPT_FORMAT_DEFAULT_INTEGER_HPP + + +#include "mpt/base/detect.hpp" + +#if 1 +#define MPT_FORMAT_CXX17_INT 1 +#else +#define MPT_FORMAT_CXX17_INT 0 +#endif + +#if MPT_FORMAT_CXX17_INT +#include "mpt/base/algorithm.hpp" +#endif // MPT_FORMAT_CXX17_INT +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#if !MPT_FORMAT_CXX17_INT +#include +#include +#include +#endif // !MPT_FORMAT_CXX17_INT +#include +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x)); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} + +#endif // MPT_FORMAT_CXX17_INT + + +#if !MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + if constexpr (std::is_same::value) { + s << static_cast(x); + } else if constexpr (mpt::is_character::value) { + s << (x + 0); // force integral promotion + } else { + s << x; + } + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} + +#endif // !MPT_FORMAT_CXX17_INT + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_INTEGER_HPP Property changes on: src/mpt/format/default_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_string.hpp =================================================================== --- src/mpt/format/default_string.hpp (nonexistent) +++ src/mpt/format/default_string.hpp (working copy) @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_STRING_HPP +#define MPT_FORMAT_DEFAULT_STRING_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline auto format_value_default(const T & x) -> decltype(mpt::convert(x)) { + return mpt::convert(x); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_STRING_HPP Property changes on: src/mpt/format/default_string.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/helpers.hpp =================================================================== --- src/mpt/format/helpers.hpp (nonexistent) +++ src/mpt/format/helpers.hpp (working copy) @@ -0,0 +1,106 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_HELPERS_HPP +#define MPT_FORMAT_HELPERS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline Tdststring convert_formatted_simple(const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return src; + } else { + Tdststring dst; + dst.reserve(src.length()); + for (std::size_t i = 0; i < src.length(); ++i) { + dst.push_back(mpt::unsafe_char_convert(src[i])); + } + return dst; + } +} + + +template +struct select_format_char_type { + using type = char; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#if MPT_USTRING_MODE_WIDE +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // C++20 +template <> +struct select_format_char_type { + using type = wchar_t; +}; +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // MPT_USTRING_MODE_WIDE +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + +template +struct select_format_string_type { + using type = mpt::ustring; +}; + +template <> +struct select_format_string_type { + using type = std::string; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_string_type { + using type = std::wstring; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_string_type { + using type = std::u8string; +}; +#endif // C++20 + +template <> +struct select_format_string_type { + using type = std::u16string; +}; + +template <> +struct select_format_string_type { + using type = std::u32string; +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_HELPERS_HPP Property changes on: src/mpt/format/helpers.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message.hpp =================================================================== --- src/mpt/format/message.hpp (nonexistent) +++ src/mpt/format/message.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class format_message_syntax_error + : public std::domain_error { +public: + format_message_syntax_error() + : std::domain_error("format string syntax error") { + return; + } +}; + +template +class message_formatter { + +public: + using Tstring = typename mpt::make_string_type::type; + +private: + Tstring format; + +private: + MPT_NOINLINE Tstring do_format(const mpt::span vals) const { + using traits = typename mpt::string_traits; + using char_type = typename traits::char_type; + using size_type = typename traits::size_type; + Tstring result; + const size_type len = traits::length(format); + traits::reserve(result, len); + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (size_type pos = 0; pos != len; ++pos) { + char_type c = format[pos]; + switch (state) { + case state::text: + if (c == char_type('{')) { + state = state::open_seen; + } else if (c == char_type('}')) { + state = state::close_seen; + } else { + state = state::text; + traits::append(result, 1, c); // output c here + } + break; + case state::open_seen: + if (c == char_type('{')) { + state = state::text; + traits::append(result, 1, char_type('{')); // output { here + } else if (c == char_type('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - char_type('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + this_arg = current_arg + 1; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - char_type('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + traits::append(result, 1, char_type('}')); // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + return result; + } + +public: + MPT_FORCEINLINE message_formatter(Tstring format_) + : format(std::move(format_)) { + } + +public: + template + MPT_NOINLINE Tstring operator()(Ts &&... xs) const { + const std::array vals{{Tformatter::template format(std::forward(xs))...}}; + return do_format(mpt::as_span(vals)); + } + +}; // struct message_formatter + + +template +class message_formatter_counted { + +private: + message_formatter formatter; + +public: + template + inline message_formatter_counted(const Tchar (&format)[literal_length]) + : formatter(Tstring(format)) { + return; + } + +public: + template + inline Tstring operator()(Ts &&... xs) const { + static_assert(static_cast(sizeof...(xs)) == N); + return formatter(std::forward(xs)...); + } + +}; // struct message_formatter_counted + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count_impl(const Tchar * const format, const std::size_t len) { + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (std::size_t pos = 0; pos != len; ++pos) { + Tchar c = format[pos]; + switch (state) { + case state::text: + if (c == Tchar('{')) { + state = state::open_seen; + } else if (c == Tchar('}')) { + state = state::close_seen; + } else { + state = state::text; + // output c here + } + break; + case state::open_seen: + if (c == Tchar('{')) { + state = state::text; + // output { here + } else if (c == Tchar('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + // output this_arg here + if (this_arg > max_arg) + { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - Tchar('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + this_arg = current_arg + 1; + // output this_arg here + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - Tchar('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + if (max_arg != args) { + throw format_message_syntax_error(); + } + return max_arg; +} + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count(const Tchar (&format)[literal_length]) { + return parse_format_string_argument_count_impl(format, literal_length - 1); +} + + +template +inline auto format_message(const Tchar (&format)[N]) { + using Tstring = typename mpt::make_string_type::type; + return message_formatter_counted(format); +} + +template +inline auto format_message_typed(const Tchar (&format)[N]) { + return message_formatter_counted(format); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message_macros.hpp =================================================================== --- src/mpt/format/message_macros.hpp (nonexistent) +++ src/mpt/format/message_macros.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_MACROS_HPP +#define MPT_FORMAT_MESSAGE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/message.hpp" + + + +#define MPT_FORMAT_MESSAGE(f) mpt::format_message(f) + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#define MPT_WFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#define MPT_UFORMAT_MESSAGE(f) mpt::format_message_typed(MPT_ULITERAL(f)) + +#define MPT_LFORMAT_MESSAGE(f) mpt::format_message_typed(f) + +#if MPT_OS_WINDOWS +#define MPT_TFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_OS_WINDOWS + +#if MPT_DETECTED_MFC +#define MPT_CWFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#define MPT_CAFORMAT_MESSAGE(f) mpt::format_message_typed(f) +#define MPT_CFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_DETECTED_MFC + + + +#endif // MPT_FORMAT_MESSAGE_MACROS_HPP Property changes on: src/mpt/format/message_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple.hpp =================================================================== --- src/mpt/format/simple.hpp (nonexistent) +++ src/mpt/format/simple.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/simple_floatingpoint.hpp" +#include "mpt/format/simple_integer.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string/utility.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +struct format : format_simple_base { + + template + static inline Tstring val(const T & x) { + return mpt::default_formatter::format(x); + } + + template + static inline Tstring fmt(const T & x, const format_simple_spec & f) { + return mpt::format_simple(x, f); + } + + template + static inline Tstring dec(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff()); + } + template + static inline Tstring dec0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width)); + } + + template + static inline Tstring dec(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring dec0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring hex(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff()); + } + template + static inline Tstring HEX(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff()); + } + template + static inline Tstring hex0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width)); + } + template + static inline Tstring HEX0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width)); + } + + template + static inline Tstring hex(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring HEX(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring hex0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width).Group(g).GroupSep(s)); + } + template + static inline Tstring HEX0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring flt(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaNrm().FillOff().Precision(precision)); + } + template + static inline Tstring fix(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaFix().FillOff().Precision(precision)); + } + template + static inline Tstring sci(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaSci().FillOff().Precision(precision)); + } + + template + static inline Tstring ptr(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return hex0(mpt::pointer_cast(x)); + } + template + static inline Tstring PTR(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return HEX0(mpt::pointer_cast(x)); + } + + static inline Tstring pad_left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, width, 0); + } + static inline Tstring pad_right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, 0, width); + } + static inline Tstring left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, 0, width - traits::length(str)) : str; + } + static inline Tstring right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, width - traits::length(str), 0) : str; + } + static inline Tstring center(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, (width - traits::length(str)) / 2, (width - traits::length(str) + 1) / 2) : str; + } + +}; // struct format + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_floatingpoint.hpp =================================================================== --- src/mpt/format/simple_floatingpoint.hpp (nonexistent) +++ src/mpt/format/simple_floatingpoint.hpp (working copy) @@ -0,0 +1,241 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP +#define MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP + + + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#endif +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_FORMAT_CXX17_FLOAT + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt, int precision) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt, precision); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template +inline Tstring format_simple_floatingpoint_postprocess_width(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() - std::distance(str.begin(), pos) < width) { + str.insert(pos, width - str.length() - std::distance(str.begin(), pos), '0'); + } + } else { + if (str.length() < width) { + str.insert(0, width - str.length(), ' '); + } + } + return str; +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & f) { + using format_string_type = typename mpt::select_format_string_type::type; + if (f.GetPrecision() != -1) { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific, f.GetPrecision()), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed, f.GetPrecision()), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general, f.GetPrecision()), f)); + } + } else { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general), f)); + } + } +} + + +#else // !MPT_FORMAT_CXX17_FLOAT + + +template +struct NumPunct : std::numpunct { +private: + unsigned int group; + char sep; + +public: + NumPunct(unsigned int g, char s) + : group(g) + , sep(s) { } + std::string do_grouping() const override { + return std::string(1, static_cast(group)); + } + Tchar do_thousands_sep() const override { + return static_cast(sep); + } +}; + +template +inline void format_simple_floatingpoint_apply_stream_format(Tostream & o, const format_simple_spec & format, const T &) { + if (format.GetGroup() > 0) + { + o.imbue(std::locale(o.getloc(), new NumPunct(format.GetGroup(), format.GetGroupSep()))); + } + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + int precision = format.GetPrecision(); + if (precision != -1 && width != 0 && !(f & format_simple_base::NotaFix) && !(f & format_simple_base::NotaSci)) + { + // fixup: + // precision behaves differently from .# + // avoid default format when precision and width are set + f &= ~format_simple_base::NotaNrm; + f |= format_simple_base::NotaFix; + } + if (f & format_simple_base::BaseDec) { + o << std::dec; + } else if (f & format_simple_base::BaseHex) { + o << std::hex; + } + if (f & format_simple_base::NotaNrm) { /*nothing*/ + } else if (f & format_simple_base::NotaFix) { + o << std::setiosflags(std::ios::fixed); + } else if (f & format_simple_base::NotaSci) { + o << std::setiosflags(std::ios::scientific); + } + if (f & format_simple_base::CaseLow) { + o << std::nouppercase; + } else if (f & format_simple_base::CaseUpp) { + o << std::uppercase; + } + if (f & format_simple_base::FillOff) { /* nothing */ + } else if (f & format_simple_base::FillNul) { + o << std::setw(width) << std::setfill(typename Tostream::char_type('0')); + } + if (precision != -1) + { + o << std::setprecision(precision); + } else + { + if constexpr (std::is_floating_point::value) + { + if (f & format_simple_base::NotaNrm) + { + o << std::setprecision(std::numeric_limits::max_digits10); + } else if (f & format_simple_base::NotaFix) + { + o << std::setprecision(std::numeric_limits::digits10); + } else if (f & format_simple_base::NotaSci) + { + o << std::setprecision(std::numeric_limits::max_digits10 - 1); + } else + { + o << std::setprecision(std::numeric_limits::max_digits10); + } + } + } +} + + +template +inline Tstring format_simple_floatingpoint_stream(const T & x, const format_simple_spec & f) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + mpt::format_simple_floatingpoint_apply_stream_format(s, f, x); + s << x; + return mpt::convert_formatted_simple(s.str()); +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + return mpt::convert(mpt::format_simple_floatingpoint_stream::type>(x, format)); +} + + + +#endif // MPT_FORMAT_CXX17_FLOAT + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP Property changes on: src/mpt/format/simple_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_integer.hpp =================================================================== --- src/mpt/format/simple_integer.hpp (nonexistent) +++ src/mpt/format/simple_integer.hpp (working copy) @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_INTEGER_HPP +#define MPT_FORMAT_SIMPLE_INTEGER_HPP + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" + +#include +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template ::value, bool> = true> +inline Tstring format_simple_integer_to_chars(const T & x, int base) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x), base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_integer_postprocess_case(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + if (f & format_simple_base::CaseUpp) { + for (auto & c : str) { + if (mpt::unsafe_char_convert('a') <= c && c <= mpt::unsafe_char_convert('z')) { + c -= mpt::unsafe_char_convert('a') - mpt::unsafe_char_convert('A'); + } + } + } + return str; +} + + +template +inline Tstring format_simple_integer_postprocess_digits(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() < width) { + str.insert(pos, width - str.length(), mpt::unsafe_char_convert('0')); + } + } + return str; +} + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4723) // potential divide by 0 +#endif // MPT_COMPILER_MSVC +template +inline Tstring format_simple_integer_postprocess_group(Tstring str, const format_simple_spec & format) { + if (format.GetGroup() > 0) { + const unsigned int groupSize = format.GetGroup(); + const char groupSep = format.GetGroupSep(); + std::size_t len = str.length(); + for (std::size_t n = 0; n < len; ++n) { + if (n > 0 && (n % groupSize) == 0) { + if (!(n == (len - 1) && (str[0] == mpt::unsafe_char_convert('+') || str[0] == mpt::unsafe_char_convert('-')))) { + str.insert(str.begin() + (len - n), 1, mpt::unsafe_char_convert(groupSep)); + } + } + } + } + return str; +} +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + int base = 10; + if (format.GetFlags() & format_simple_base::BaseDec) { + base = 10; + } + if (format.GetFlags() & format_simple_base::BaseHex) { + base = 16; + } + using format_string_type = typename mpt::select_format_string_type::type; + return mpt::convert(mpt::format_simple_integer_postprocess_group(mpt::format_simple_integer_postprocess_digits(mpt::format_simple_integer_postprocess_case(mpt::format_simple_integer_to_chars(x, base), format), format), format)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_INTEGER_HPP Property changes on: src/mpt/format/simple_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_spec.hpp =================================================================== --- src/mpt/format/simple_spec.hpp (nonexistent) +++ src/mpt/format/simple_spec.hpp (working copy) @@ -0,0 +1,218 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_SPEC_HPP +#define MPT_FORMAT_SIMPLE_SPEC_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct format_simple_base { + + enum FormatFlagsEnum + { + BaseDec = 0x0001, // base 10 (integers only) // int+float + BaseHex = 0x0002, // base 16 (integers only) // int+float + CaseLow = 0x0010, // lower case hex digits // int+float + CaseUpp = 0x0020, // upper case hex digits // int+float + FillOff = 0x0100, // do not fill up width // int+float + FillNul = 0x0400, // fill up width with zeros // int+float + NotaNrm = 0x1000, // float: normal/default notation // float + NotaFix = 0x2000, // float: fixed point notation // float + NotaSci = 0x4000, // float: scientific notation // float + }; + +}; // struct format_simple_base + +using format_simple_flags = unsigned int; + +static_assert(sizeof(format_simple_flags) >= sizeof(format_simple_base::FormatFlagsEnum)); + + +class format_simple_spec { +private: + format_simple_flags flags; + std::size_t width; // int+float + int precision; // float + unsigned int group; // int + char group_sep; // int +public: + MPT_CONSTEXPRINLINE format_simple_spec() noexcept + : flags(0), width(0), precision(-1), group(0), group_sep(',') { } + MPT_CONSTEXPRINLINE format_simple_flags GetFlags() const noexcept { + return flags; + } + MPT_CONSTEXPRINLINE std::size_t GetWidth() const noexcept { + return width; + } + MPT_CONSTEXPRINLINE int GetPrecision() const noexcept { + return precision; + } + MPT_CONSTEXPRINLINE unsigned int GetGroup() const noexcept { + return group; + } + MPT_CONSTEXPRINLINE char GetGroupSep() const noexcept { + return group_sep; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetFlags(format_simple_flags f) noexcept { + flags = f; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetWidth(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetPrecision(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroup(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & BaseDec() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseDec; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & BaseHex() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseHex; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseLow() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseLow; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseUpp() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseUpp; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillOff() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillOff; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNul() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillNul; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaNrm() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaNrm; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaFix() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaFix; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaSci() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaSci; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Width(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Prec(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Group(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & GroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Dec() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hex() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Low() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upp() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Off() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nul() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nrm() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Fix() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Sci() noexcept { + return NotaSci(); + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Decimal() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hexadecimal() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Lower() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upper() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNone() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillZero() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatNormal() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatFixed() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatScientific() noexcept { + return NotaSci(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Precision(int p) noexcept { + return Prec(p); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_SPEC_HPP Property changes on: src/mpt/format/simple_spec.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_message.hpp =================================================================== --- src/mpt/format/tests/tests_format_message.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_message.hpp (working copy) @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace message { + +MPT_TEST_GROUP_INLINE("mpt/format/message") +{ + static_assert(mpt::parse_format_string_argument_count("") == 0); + static_assert(mpt::parse_format_string_argument_count("{{") == 0); + static_assert(mpt::parse_format_string_argument_count("}}") == 0); + static_assert(mpt::parse_format_string_argument_count("{}") == 1); + static_assert(mpt::parse_format_string_argument_count("{}{}") == 2); + static_assert(mpt::parse_format_string_argument_count("{0}{1}") == 2); + + // basic + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}{}{}")(1, 2, 3), "123"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}")(1, 2, 3), "321"); + + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}{4}{3}{6}{5}{7}{10}{9}{8}")(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a"), "21043657a98"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE(L"{}{}{}")(1, 2, 3), L"123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + // escaping behviour + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%%")(), "%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}")("a"), "a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%%")("a"), "a%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%1")(), "%1"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%{}")("a"), "%a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%b")(), "%b"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{}}")(), "{}"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{{}}}")("a"), "{a}"); +} + +} // namespace message +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/tests/tests_format_message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_simple.hpp =================================================================== --- src/mpt/format/tests/tests_format_simple.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_simple.hpp (working copy) @@ -0,0 +1,161 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace simple { + +MPT_TEST_GROUP_INLINE("mpt/format/simple") +{ + MPT_TEST_EXPECT_EQUAL(mpt::format::val(1.5f), "1.5"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(true), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(false), "0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(0), "0"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-23), "-23"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(42), "42"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<3>((int32)-1), "-001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex((int32)-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(-0xabcde), "-abcde"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min()), "-80000000"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min() + 1), "-7fffffff"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), "123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), "00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), "123e"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(1), "01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(1), "001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(11), "011"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(-1), "-01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(-1), "-001"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(0xa2345678), MPT_USTRING("0A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(0xa2345678), MPT_USTRING("00A2345678")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), L"123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), L"00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), L"123e"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-87.0f), "-87"); + if (mpt::format::val(-0.5e-6) != "-5e-007" + && mpt::format::val(-0.5e-6) != "-5e-07" + && mpt::format::val(-0.5e-6) != "-5e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-07" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-007") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-005" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-05" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-5" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(58.65403492763) != "58.654034927630001" + && mpt::format::val(58.65403492763) != "58.65403492763") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(58.65403492763, 6), "58.654"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(23.42, 1), "23.4"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(234.2, 1), "234.2"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(2342.0, 1), "2342.0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 2345678), std::string("2;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), std::string("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), std::string("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), MPT_USTRING("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), MPT_USTRING("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', 0xa2345678), MPT_USTRING("0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', 0xa2345678), MPT_USTRING("0:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', 0xa2345678), MPT_USTRING("00:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', 0xa2345678), MPT_USTRING("000:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', -0x12345678), MPT_USTRING("-012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', -0x12345678), MPT_USTRING("-0:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', -0x12345678), MPT_USTRING("-00:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', -0x12345678), MPT_USTRING("-000:012:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0x345678), MPT_USTRING("0:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x345678), MPT_USTRING("-0:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::left(3, "a"), "a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::right(3, "a"), " a"); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(3, "a"), " a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(4, "a"), " a "); + + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), "6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 4), "6.1235"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), L"6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), L"6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), L"6.123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace simple +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/tests/tests_format_simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/json/json.hpp =================================================================== --- src/mpt/json/json.hpp (nonexistent) +++ src/mpt/json/json.hpp (working copy) @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_JSON_JSON_HPP +#define MPT_JSON_JSON_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/detect/nlohmann_json.hpp" + +#if MPT_DETECTED_NLOHMANN_JSON +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#include +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmismatched-tags" +#endif // MPT_COMPILER_CLANG +#include "nlohmann/json.hpp" +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG +#endif // MPT_DETECTED_NLOHMANN_JSON + + + +namespace nlohmann { +template <> +struct adl_serializer { + static void to_json(json & j, const mpt::ustring & val) { + j = mpt::convert(mpt::common_encoding::utf8, val); + } + static void from_json(const json & j, mpt::ustring & val) { + val = mpt::convert(mpt::common_encoding::utf8, j.get()); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::map & val) { + std::map utf8map; + for (const auto & value : val) + { + utf8map[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + j = std::move(utf8map); + } + static void from_json(const json & j, std::map & val) { + std::map utf8map = j.get>(); + std::map result; + for (const auto & value : utf8map) + { + result[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + val = std::move(result); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::optional & val) { + j = (val ? json{*val} : json{nullptr}); + } + static void from_json(const json & j, std::optional & val) { + if (!j.is_null()) + { + val = j.get(); + } else + { + val = std::nullopt; + } + } +}; +} // namespace nlohmann + + + +#endif // MPT_JSON_JSON_HPP Property changes on: src/mpt/json/json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/mutex/mutex.hpp =================================================================== --- src/mpt/mutex/mutex.hpp (nonexistent) +++ src/mpt/mutex/mutex.hpp (working copy) @@ -0,0 +1,178 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_MUTEX_MUTEX_HPP +#define MPT_MUTEX_MUTEX_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + +#if !MPT_PLATFORM_MULTITHREADED +#define MPT_MUTEX_NONE 1 +#elif MPT_COMPILER_GENERIC +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) +#define MPT_MUTEX_WIN32 1 +#else +#define MPT_MUTEX_STD 1 +#endif + +#ifndef MPT_MUTEX_STD +#define MPT_MUTEX_STD 0 +#endif +#ifndef MPT_MUTEX_WIN32 +#define MPT_MUTEX_WIN32 0 +#endif +#ifndef MPT_MUTEX_NONE +#define MPT_MUTEX_NONE 0 +#endif + +#if MPT_MUTEX_STD +#if !MPT_COMPILER_GENERIC && (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#include +#else +#include +#endif +#elif MPT_MUTEX_WIN32 +#include +#endif // MPT_MUTEX + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_MUTEX_STD + +using mutex = std::mutex; +using recursive_mutex = std::recursive_mutex; + +#elif MPT_MUTEX_WIN32 + +// compatible with c++11 std::mutex, can eventually be replaced without touching any usage site +class mutex { +private: + CRITICAL_SECTION impl; + +public: + mutex() { + InitializeCriticalSection(&impl); + } + ~mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +// compatible with c++11 std::recursive_mutex, can eventually be replaced without touching any usage site +class recursive_mutex { +private: + CRITICAL_SECTION impl; + +public: + recursive_mutex() { + InitializeCriticalSection(&impl); + } + ~recursive_mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +#else // MPT_MUTEX_NONE + +class mutex { +public: + mutex() { + return; + } + ~mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +class recursive_mutex { +public: + recursive_mutex() { + return; + } + ~recursive_mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +#endif // MPT_MUTEX + +#if MPT_MUTEX_STD + +template +using lock_guard = std::lock_guard; + +#else // !MPT_MUTEX_STD + +// compatible with c++11 std::lock_guard, can eventually be replaced without touching any usage site +template +class lock_guard { +private: + mutex_type & mutex; + +public: + lock_guard(mutex_type & m) + : mutex(m) { + mutex.lock(); + } + ~lock_guard() { + mutex.unlock(); + } +}; + +#endif // MPT_MUTEX_STD + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_MUTEX_MUTEX_HPP Property changes on: src/mpt/mutex/mutex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/osinfo/windows_version.hpp =================================================================== --- src/mpt/osinfo/windows_version.hpp (nonexistent) +++ src/mpt/osinfo/windows_version.hpp (working copy) @@ -0,0 +1,347 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OSINFO_WINDOWS_VERSION_HPP +#define MPT_OSINFO_WINDOWS_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace osinfo { + +namespace windows { + + + +class Version { + +public: + enum Number : uint64 + { + WinNT4 = 0x0000000400000000ull, + Win2000 = 0x0000000500000000ull, + WinXP = 0x0000000500000001ull, + WinXP64 = 0x0000000500000002ull, + WinVista = 0x0000000600000000ull, + Win7 = 0x0000000600000001ull, + Win8 = 0x0000000600000002ull, + Win81 = 0x0000000600000003ull, + Win10 = 0x0000000a00000000ull, + WinNewer = Win10 + 1ull + }; + + struct System { + uint32 Major = 0; + uint32 Minor = 0; + System() = default; + constexpr System(Number number) noexcept + : Major(static_cast((static_cast(number) >> 32) & 0xffffffffu)) + , Minor(static_cast((static_cast(number) >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint64 number) noexcept + : Major(static_cast((number >> 32) & 0xffffffffu)) + , Minor(static_cast((number >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint32 major, uint32 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr operator uint64() const noexcept { + return (static_cast(Major) << 32) | (static_cast(Minor) << 0); + } + }; + + struct ServicePack { + uint16 Major = 0; + uint16 Minor = 0; + ServicePack() = default; + explicit constexpr ServicePack(uint16 major, uint16 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr bool HasServicePack() const noexcept { + return Major != 0 || Minor != 0; + } + constexpr operator uint32() const noexcept { + return (static_cast(Major) << 16) | (static_cast(Minor) << 0); + } + }; + + typedef uint32 Build; + + typedef uint32 TypeId; + +protected: + bool m_SystemIsWindows; + + System m_System; + ServicePack m_ServicePack; + Build m_Build; + TypeId m_Type; + +protected: + Version() noexcept + : m_SystemIsWindows(false) + , m_System() + , m_ServicePack() + , m_Build() + , m_Type() { + } + +public: + static Version NoWindows() noexcept { + return Version(); + } + + Version(mpt::osinfo::windows::Version::System system, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build, mpt::osinfo::windows::Version::TypeId type) noexcept + : m_SystemIsWindows(true) + , m_System(system) + , m_ServicePack(servicePack) + , m_Build(build) + , m_Type(type) { + } + +protected: +#if MPT_OS_WINDOWS + + static mpt::osinfo::windows::Version VersionFromNTDDI_VERSION() noexcept { + // Initialize to used SDK version + mpt::osinfo::windows::Version::System System = +#if NTDDI_VERSION >= 0x0A000000 // NTDDI_WIN10 + mpt::osinfo::windows::Version::Win10 +#elif NTDDI_VERSION >= 0x06030000 // NTDDI_WINBLUE + mpt::osinfo::windows::Version::Win81 +#elif NTDDI_VERSION >= 0x06020000 // NTDDI_WIN8 + mpt::osinfo::windows::Version::Win8 +#elif NTDDI_VERSION >= 0x06010000 // NTDDI_WIN7 + mpt::osinfo::windows::Version::Win7 +#elif NTDDI_VERSION >= 0x06000000 // NTDDI_VISTA + mpt::osinfo::windows::Version::WinVista +#elif NTDDI_VERSION >= 0x05020000 // NTDDI_WS03 + mpt::osinfo::windows::Version::WinXP64 +#elif NTDDI_VERSION >= NTDDI_WINXP + mpt::osinfo::windows::Version::WinXP +#elif NTDDI_VERSION >= NTDDI_WIN2K + mpt::osinfo::windows::Version::Win2000 +#else + mpt::osinfo::windows::Version::WinNT4 +#endif + ; + return mpt::osinfo::windows::Version(System, mpt::osinfo::windows::Version::ServicePack(((NTDDI_VERSION & 0xffffu) >> 8) & 0xffu, ((NTDDI_VERSION & 0xffffu) >> 0) & 0xffu), 0, 0); + } + + static mpt::osinfo::windows::Version::System SystemVersionFrom_WIN32_WINNT() noexcept { +#if defined(_WIN32_WINNT) + return mpt::osinfo::windows::Version::System((static_cast(_WIN32_WINNT) & 0xff00u) >> 8, (static_cast(_WIN32_WINNT) & 0x00ffu) >> 0); +#else + return mpt::osinfo::windows::Version::System(); +#endif + } + + static mpt::osinfo::windows::Version GatherWindowsVersion() noexcept { +#if MPT_OS_WINDOWS_WINRT + return VersionFromNTDDI_VERSION(); +#else // !MPT_OS_WINDOWS_WINRT + OSVERSIONINFOEXW versioninfoex{}; + versioninfoex.dwOSVersionInfoSize = sizeof(versioninfoex); +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4996) // 'GetVersionExW': was declared deprecated +#pragma warning(disable : 28159) // Consider using 'IsWindows*' instead of 'GetVersionExW'. Reason: Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers. +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif // MPT_COMPILER_CLANG + if (GetVersionExW((LPOSVERSIONINFOW)&versioninfoex) == FALSE) { + return VersionFromNTDDI_VERSION(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG + if (versioninfoex.dwPlatformId != VER_PLATFORM_WIN32_NT) { + return VersionFromNTDDI_VERSION(); + } + DWORD dwProductType = 0; +#if (_WIN32_WINNT >= 0x0600) // _WIN32_WINNT_VISTA + dwProductType = PRODUCT_UNDEFINED; + if (GetProductInfo(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion, versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor, &dwProductType) == FALSE) { + dwProductType = PRODUCT_UNDEFINED; + } +#endif + return mpt::osinfo::windows::Version( + mpt::osinfo::windows::Version::System(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion), + mpt::osinfo::windows::Version::ServicePack(versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor), + versioninfoex.dwBuildNumber, + dwProductType); +#endif // MPT_OS_WINDOWS_WINRT + } + +#endif // MPT_OS_WINDOWS + +public: + static mpt::osinfo::windows::Version Current() noexcept { +#if MPT_OS_WINDOWS + return GatherWindowsVersion(); +#else // !MPT_OS_WINDOWS + return mpt::osinfo::windows::Version::NoWindows(); +#endif // MPT_OS_WINDOWS + } + +public: + bool IsWindows() const noexcept { + return m_SystemIsWindows; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System < version; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_ServicePack < servicePack; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_Build < build; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + if (m_ServicePack > servicePack) { + return false; + } + if (m_ServicePack < servicePack) { + return true; + } + return m_Build < build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System >= version; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_ServicePack >= servicePack; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_Build >= build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + if (m_ServicePack < servicePack) { + return false; + } + if (m_ServicePack > servicePack) { + return true; + } + return m_Build >= build; + } + + mpt::osinfo::windows::Version::System GetSystem() const noexcept { + return m_System; + } + + mpt::osinfo::windows::Version::ServicePack GetServicePack() const noexcept { + return m_ServicePack; + } + + mpt::osinfo::windows::Version::Build GetBuild() const noexcept { + return m_Build; + } + + mpt::osinfo::windows::Version::TypeId GetTypeId() const noexcept { + return m_Type; + } + +}; // class Version + + + +} // namespace windows + +} // namespace osinfo + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OSINFO_WINDOWS_VERSION_HPP Property changes on: src/mpt/osinfo/windows_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/out_of_memory/out_of_memory.hpp =================================================================== --- src/mpt/out_of_memory/out_of_memory.hpp (nonexistent) +++ src/mpt/out_of_memory/out_of_memory.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP +#define MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#if !MPT_DETECTED_MFC +#include +#endif // !MPT_DETECTED_MFC + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Exception handling helpers, because MFC requires explicit deletion of the exception object, +// Thus, always call exactly one of mpt::rethrow_out_of_memory(e) or mpt::delete_out_of_memory(e). + +#if MPT_DETECTED_MFC + +using out_of_memory = CMemoryException *; + +[[noreturn]] inline void throw_out_of_memory() { + AfxThrowMemoryException(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory & e) { + if (e) { + e->Delete(); + e = nullptr; + } +} + +#else // !MPT_DETECTED_MFC + +using out_of_memory = const std::bad_alloc &; + +[[noreturn]] inline void throw_out_of_memory() { + throw std::bad_alloc(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); +} + +#endif // MPT_DETECTED_MFC + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP Property changes on: src/mpt/out_of_memory/out_of_memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/parse.hpp =================================================================== --- src/mpt/parse/parse.hpp (nonexistent) +++ src/mpt/parse/parse.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_PARSE_HPP +#define MPT_PARSE_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::string parse_as_internal_string_type(const std::string & s) { + return s; +} + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +inline std::wstring parse_as_internal_string_type(const std::wstring & s) { + return s; +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_USTRING_MODE_WIDE +template +inline std::wstring parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(s); +} +#else // !MPT_USTRING_MODE_WIDE +template +inline std::string parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(mpt::common_encoding::utf8, s); +} +#endif // MPT_USTRING_MODE_WIDE + + +template +inline T ConvertStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> value)) { + return T{}; + } + } + return value; +} + + +template +inline T ConvertHexStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> std::hex >> value)) { + return T{}; + } + } + return value; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_PARSE_HPP Property changes on: src/mpt/parse/parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/tests/tests_parse.hpp =================================================================== --- src/mpt/parse/tests/tests_parse.hpp (nonexistent) +++ src/mpt/parse/tests/tests_parse.hpp (working copy) @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_TESTS_PARSE_HPP +#define MPT_PARSE_TESTS_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace parse { + +MPT_TEST_GROUP_INLINE("mpt/parse") +{ + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("586"), 586u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("2147483647"), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("4294967295"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-9223372036854775808"), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-159"), -159); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("85059"), 85059u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), (uint64)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("18446744073709551615"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-87.0"), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-0.5e-6"), -0.5e-6); +#endif +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("58.65403492763"), 58.65403492763); +#else + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStrTo("58.65403492763"), 58.65403492763, 0.0001); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-87.0)), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-0.5e-6)), -0.5e-6); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo("fe"), 254); +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(L"fe"), 254); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(MPT_USTRING("ffff")), 65535u); +} + +} // namespace parse +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_TESTS_PARSE_HPP Property changes on: src/mpt/parse/tests/tests_parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/crand.hpp =================================================================== --- src/mpt/random/crand.hpp (nonexistent) +++ src/mpt/random/crand.hpp (working copy) @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_CRAND_HPP +#define MPT_RANDOM_CRAND_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/numeric.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class crand { +public: + using state_type = void; + using result_type = int; + +private: + static void reseed(uint32 seed) { + std::srand(seed); + } + +public: + template + static void reseed(Trd & rd) { + reseed(mpt::random(rd)); + } + +public: + crand() = default; + explicit crand(const std::string &) { + return; + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return 0; + } + static MPT_CONSTEXPRINLINE result_type max() { + return RAND_MAX; + } + static MPT_CONSTEXPRINLINE int result_bits() { + return mpt::lower_bound_entropy_bits(RAND_MAX); + } + result_type operator()() { + return std::rand(); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_CRAND_HPP Property changes on: src/mpt/random/crand.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/default_engines.hpp =================================================================== --- src/mpt/random/default_engines.hpp (nonexistent) +++ src/mpt/random/default_engines.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEFAULT_ENGINES_HPP +#define MPT_RANDOM_DEFAULT_ENGINES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using deterministic_fast_engine = mpt::lcg_msvc; +using deterministic_good_engine = mpt::lcg_musl; + +// We cannot use std::minstd_rand here because it has not a power-of-2 sized +// output domain which we rely upon. +using fast_engine = mpt::lcg_msvc; // about 3 ALU operations, ~32bit of state, suited for inner loops +using good_engine = std::ranlux48; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEFAULT_ENGINES_HPP Property changes on: src/mpt/random/default_engines.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/device.hpp =================================================================== --- src/mpt/random/device.hpp (nonexistent) +++ src/mpt/random/device.hpp (working copy) @@ -0,0 +1,303 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEVICE_HPP +#define MPT_RANDOM_DEVICE_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/mutex/mutex.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" +#include "mpt/random/random.hpp" + +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr uint32 DETERMINISTIC_RNG_SEED = 3141592653u; // pi + + + +template +struct default_radom_seed_hash { +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc32c; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc64_jones; +}; + + +class prng_random_device_time_seeder { + +public: + template + inline T generate_seed() { + // Note: CRC is actually not that good a choice here, but it is simple and we + // already have an implementaion available. Better choices for mixing entropy + // would be a hash function with proper avalanche characteristics or a block + // or stream cipher with any pre-choosen random key and IV. The only aspect we + // really need here is whitening of the bits. + typename mpt::default_radom_seed_hash::type hash; + + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#if !defined(MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK) + // Avoid std::chrono::high_resolution_clock on Emscripten because availability is problematic in AudioWorklet context. + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::high_resolution_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#endif // !MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK + + return static_cast(hash.result()); + } + +public: + prng_random_device_time_seeder() = default; +}; + + +// C++11 std::random_device may be implemented as a deterministic PRNG. +// There is no way to seed this PRNG and it is allowed to be seeded with the +// same value on each program invocation. This makes std::random_device +// completely useless even as a non-cryptographic entropy pool. +// We fallback to time-seeded std::mt19937 if std::random_device::entropy() is +// 0 or less. +class sane_random_device { +private: + mpt::mutex m; + std::string token; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + std::unique_ptr prd; + bool rd_reliable{false}; +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + std::unique_ptr rd_fallback; + +public: + using result_type = unsigned int; + +private: + void init_fallback() { + if (!rd_fallback) { + if (token.length() > 0) { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + std::vector seeds; + seeds.push_back(static_cast(seed_val >> 32)); + seeds.push_back(static_cast(seed_val >> 0)); + for (std::size_t i = 0; i < token.length(); ++i) { + seeds.push_back(static_cast(static_cast(token[i]))); + } + std::seed_seq seed(seeds.begin(), seeds.end()); + rd_fallback = std::make_unique(seed); + } else { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + unsigned int seeds[2]; + seeds[0] = static_cast(seed_val >> 32); + seeds[1] = static_cast(seed_val >> 0); + std::seed_seq seed(seeds + 0, seeds + 2); + rd_fallback = std::make_unique(seed); + } + } + } + +public: + sane_random_device() { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + sane_random_device(const std::string & token_) + : token(token_) { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(token); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(result_type) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + result_type result = 0; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + if (prd) { + try { + if constexpr (std::random_device::min() != 0 || !mpt::is_mask(std::random_device::max())) { + // insane std::random_device + // This implementation is not exactly uniformly distributed but good enough + // for OpenMPT. + constexpr double rd_min = static_cast(std::random_device::min()); + constexpr double rd_max = static_cast(std::random_device::max()); + constexpr double rd_range = rd_max - rd_min; + constexpr double rd_size = rd_range + 1.0; + const double rd_entropy = std::log2(rd_size); + const int iterations = static_cast(std::ceil(result_bits() / rd_entropy)); + double tmp = 0.0; + for (int i = 0; i < iterations; ++i) { + tmp = (tmp * rd_size) + (static_cast((*prd)()) - rd_min); + } + double result_01 = std::floor(tmp / std::pow(rd_size, iterations)); + result = static_cast(std::floor(result_01 * (static_cast(max() - min()) + 1.0))) + min(); + } else { + // sane std::random_device + result = 0; + std::size_t rd_bits = mpt::lower_bound_entropy_bits(std::random_device::max()); + for (std::size_t entropy = 0; entropy < (sizeof(result_type) * 8); entropy += rd_bits) { + if (rd_bits < (sizeof(result_type) * 8)) { + result = (result << rd_bits) | static_cast((*prd)()); + } else { + result = result | static_cast((*prd)()); + } + } + } + } catch (const std::exception &) { + rd_reliable = false; + init_fallback(); + } + } else { + rd_reliable = false; + } + if (!rd_reliable) { + // std::random_device is unreliable + // XOR the generated random number with more entropy from the time-seeded + // PRNG. + // Note: This is safe even if the std::random_device itself is implemented + // as a std::mt19937 PRNG because we are very likely using a different + // seed. + result ^= mpt::random(*rd_fallback); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + result ^= mpt::random(*rd_fallback); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + return result; + } +}; + + +class prng_random_device_deterministic_seeder { +protected: + template + constexpr T generate_seed() noexcept { + return static_cast(mpt::DETERMINISTIC_RNG_SEED); + } + +protected: + prng_random_device_deterministic_seeder() = default; +}; + +template +class prng_random_device + : private seeder { +public: + using result_type = unsigned int; + +private: + mpt::mutex m; + Trng rng; + +public: + prng_random_device() + : rng(seeder::template generate_seed()) { + return; + } + prng_random_device(const std::string &) + : rng(seeder::template generate_seed()) { + return; + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(unsigned int) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + return mpt::random(rng); + } +}; + + +using deterministc_random_device = mpt::prng_random_device; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEVICE_HPP Property changes on: src/mpt/random/device.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine.hpp =================================================================== --- src/mpt/random/engine.hpp (nonexistent) +++ src/mpt/random/engine.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_HPP +#define MPT_RANDOM_ENGINE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/seed.hpp" + +#include +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct engine_traits { + typedef typename Trng::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return Trng::result_bits(); + } + template + static inline Trng make(Trd & rd) { + return Trng(rd); + } +}; + +// C++11 random does not provide any sane way to determine the amount of entropy +// required to seed a particular engine. VERY STUPID. +// List the ones we are likely to use. + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937::result_type) * 8 * std::mt19937::state_size + }; + typedef std::mt19937 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937_64::result_type) * 8 * std::mt19937_64::state_size + }; + typedef std::mt19937_64 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux24_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux48_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + + + +template +inline Trng make_prng(Trd & rd) { + return mpt::engine_traits::make(rd); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_HPP Property changes on: src/mpt/random/engine.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine_lcg.hpp =================================================================== --- src/mpt/random/engine_lcg.hpp (nonexistent) +++ src/mpt/random/engine_lcg.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_LCG_HPP +#define MPT_RANDOM_ENGINE_LCG_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4724) // potential mod by 0 +#endif // MPT_COMPILER_MSVC + +template +class lcg_engine { +public: + typedef Tstate state_type; + typedef Tvalue result_type; + +private: + state_type state; + +public: + template + explicit inline lcg_engine(Trng & rd) + : state(mpt::random(rd)) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + explicit inline lcg_engine(state_type seed) + : state(seed) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return static_cast(0); + } + static MPT_CONSTEXPRINLINE result_type max() { + static_assert(((result_mask >> result_shift) << result_shift) == result_mask); + return static_cast(result_mask >> result_shift); + } + static MPT_CONSTEXPRINLINE int result_bits() { + static_assert(((static_cast(1) << result_bits_) - 1) == (result_mask >> result_shift)); + return result_bits_; + } + inline result_type operator()() { + // we return results from the current state and update state after returning. results in better pipelining. + state_type s = state; + result_type result = static_cast((s & result_mask) >> result_shift); + s = mpt::modulo_if_not_zero((a * s) + c); + state = s; + return result; + } +}; + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + +typedef lcg_engine lcg_msvc; +typedef lcg_engine lcg_c99; +typedef lcg_engine lcg_musl; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_LCG_HPP Property changes on: src/mpt/random/engine_lcg.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/random.hpp =================================================================== --- src/mpt/random/random.hpp (nonexistent) +++ src/mpt/random/random.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_RANDOM_HPP +#define MPT_RANDOM_RANDOM_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < (sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + return static_cast(result); +} + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if constexpr (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +inline T random(Trng & rng, std::size_t required_entropy_bits) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +struct uniform_real_distribution { +private: + T a; + T b; + +public: + inline uniform_real_distribution(T a_, T b_) + : a(a_) + , b(b_) { + return; + } + template + inline T operator()(Trng & rng) const { + const int mantissa_bits = std::numeric_limits::digits; + return ((b - a) * static_cast(mpt::random(rng)) / static_cast((static_cast(1u) << mantissa_bits))) + a; + } +}; + + +template +inline T random(Trng & rng, T min, T max) { + static_assert(!std::numeric_limits::is_integer); + typedef mpt::uniform_real_distribution dis_type; + dis_type dis(min, max); + return static_cast(dis(rng)); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_RANDOM_HPP Property changes on: src/mpt/random/random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/seed.hpp =================================================================== --- src/mpt/random/seed.hpp (nonexistent) +++ src/mpt/random/seed.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_SEED_HPP +#define MPT_RANDOM_SEED_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class seed_seq_values { +private: + std::array seeds; + +public: + template + explicit seed_seq_values(Trd & rd) { + for (std::size_t i = 0; i < N; ++i) { + seeds[i] = rd(); + } + } + const unsigned int * begin() const { + return seeds.data(); + } + const unsigned int * end() const { + return seeds.data() + N; + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_SEED_HPP Property changes on: src/mpt/random/seed.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/tests/tests_random.hpp =================================================================== --- src/mpt/random/tests/tests_random.hpp (nonexistent) +++ src/mpt/random/tests/tests_random.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_RANDOM_HPP +#define MPT_BASE_TESTS_RANDOM_HPP + + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/random/random.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace random { + +MPT_TEST_GROUP_INLINE("mpt/random") +{ + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + + bool failed = false; + + for (std::size_t i = 0; i < 10000; ++i) { + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 1u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0u, 1u); + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 1); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0, 1); + + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0f, 1.0f), 0.0f, 1.0f); + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0, 1.0), 0.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 1.0), -1.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 0.0), -1.0, 0.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 2.0), 1.0, 2.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 3.0), 1.0, 3.0); + } + + MPT_TEST_EXPECT_EXPR(!failed); +} + +} // namespace random +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_RANDOM_HPP Property changes on: src/mpt/random/tests/tests_random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/buffer.hpp =================================================================== --- src/mpt/string/buffer.hpp (nonexistent) +++ src/mpt/string/buffer.hpp (working copy) @@ -0,0 +1,344 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_BUFFER_HPP +#define MPT_STRING_BUFFER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include +#include +#include + +#include +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + + +template +class StringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, buf + len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } + StringBufRefImpl & operator=(const Tstring & str) { + std::copy(str.data(), str.data() + std::min(str.length(), size - 1), buf); + std::fill(buf + std::min(str.length(), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class StringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } +}; + + + +template +inline StringBufRefImpl::type> ReadTypedBuf(const std::array & buf) { + return StringBufRefImpl::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(std::array & buf) { + return StringBufRefImpl(buf.data(), size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar (&buf)[size]) { + return StringBufRefImpl(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl(buf, size); +} + + + +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const std::array & buf) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(std::array & buf) { + return StringBufRefImpl::type>, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} + + + +#if MPT_OS_WINDOWS + +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const std::array & buf) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(std::array & buf) { + return StringBufRefImpl::type>::string_type, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_DETECTED_MFC + +template +class CStringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } + CStringBufRefImpl & operator=(const CString & str) { + std::copy(str.GetString(), str.GetString() + std::min(static_cast(str.GetLength()), size - 1), buf); + std::fill(buf + std::min(static_cast(str.GetLength()), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class CStringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } +}; + +template +inline CStringBufRefImpl::type> ReadCStringBuf(const std::array & buf) { + return CStringBufRefImpl::type>(buf.data(), size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar (&buf)[size]) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar * buf, std::size_t size) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(std::array & buf) { + return CStringBufRefImpl(buf.data(), size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar (&buf)[size]) { + return CStringBufRefImpl(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar * buf, std::size_t size) { + return CStringBufRefImpl(buf, size); +} + +#endif // MPT_DETECTED_MFC + + + +template +struct charbuf { +public: + using Tchar = char; + using char_type = Tchar; + using string_type = std::basic_string; + using string_view_type = std::basic_string_view; + constexpr std::size_t static_length() const { + return len; + } + +public: + Tchar buf[len]; + +public: + charbuf() { + std::fill(std::begin(buf), std::end(buf), Tchar('\0')); + } + charbuf(const charbuf &) = default; + charbuf(charbuf &&) = default; + charbuf & operator=(const charbuf &) = default; + charbuf & operator=(charbuf &&) = default; + const Tchar & operator[](std::size_t i) const { + return buf[i]; + } + std::string str() const { + return static_cast(*this); + } + operator string_type() const { + return mpt::ReadAutoBuf(buf); + } + explicit operator string_view_type() const { + return static_cast(mpt::ReadAutoBuf(buf)); + } + bool empty() const { + return mpt::ReadAutoBuf(buf).empty(); + } + charbuf & operator=(const string_type & str) { + mpt::WriteAutoBuf(buf) = str; + return *this; + } + +public: + friend bool operator!=(const charbuf & a, const charbuf & b) { + return static_cast(a) != static_cast(b); + } + friend bool operator!=(const std::string & a, const charbuf & b) { + return a != static_cast(b); + } + friend bool operator!=(const charbuf & a, const std::string & b) { + return static_cast(a) != b; + } + friend bool operator==(const charbuf & a, const charbuf & b) { + return static_cast(a) == static_cast(b); + } + friend bool operator==(const std::string & a, const charbuf & b) { + return a == static_cast(b); + } + friend bool operator==(const charbuf & a, const std::string & b) { + return static_cast(a) == b; + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_BUFFER_HPP Property changes on: src/mpt/string/buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_buffer.hpp =================================================================== --- src/mpt/string/tests/tests_string_buffer.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_buffer.hpp (working copy) @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_BUFFER_HPP +#define MPT_STRING_TESTS_STRING_BUFFER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/buffer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace buffer { + +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +{ + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteAutoBuf(buf) = std::string("foobar"); + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + char foobar[] = {'f', 'o', 'o', 'b', 'a', 'r', '\0'}; + mpt::WriteTypedBuf(buf) = (char *)foobar; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = (const char *)"foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = "foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + const char buf[4] = {'f', 'o', 'o', 'b'}; + std::string foo = mpt::ReadAutoBuf(buf); + MPT_TEST_EXPECT_EQUAL(foo, std::string("foob")); + } +} + +} // namespace buffer +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_BUFFER_HPP Property changes on: src/mpt/string/tests/tests_string_buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_utility.hpp =================================================================== --- src/mpt/string/tests/tests_string_utility.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_utility.hpp (working copy) @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_UTILITY_HPP +#define MPT_STRING_TESTS_STRING_UTILITY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace utility { + +MPT_TEST_GROUP_INLINE("mpt/string/utility") +{ + MPT_TEST_EXPECT_EQUAL(mpt::trim_left(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string(" ")), ""); + + // weird things with std::string containing \0 in the middle and trimming \0 + MPT_TEST_EXPECT_EQUAL(std::string("\0\ta\0b ", 6).length(), (std::size_t)6); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string("\0\ta\0b ", 6)), std::string("\0\ta\0b", 5)); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string("\0\ta\0b\0", 6), std::string("\0", 1)), std::string("\ta\0b", 4)); +} + +} // namespace utility +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_UTILITY_HPP Property changes on: src/mpt/string/tests/tests_string_utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/types.hpp =================================================================== --- src/mpt/string/types.hpp (nonexistent) +++ src/mpt/string/types.hpp (working copy) @@ -0,0 +1,407 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TYPES_HPP +#define MPT_STRING_TYPES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +enum class common_encoding +{ + utf8, + ascii, // strictly 7-bit ASCII + iso8859_1, + iso8859_15, + cp850, + cp437, + windows1252, +}; + + +enum class logical_encoding +{ + locale, // CP_ACP on windows, system configured C locale otherwise + active_locale, // active C/C++ global locale +}; + +// source code / preprocessor (i.e. # token) +inline constexpr auto source_encoding = common_encoding::ascii; + +// debug log files +inline constexpr auto logfile_encoding = common_encoding::utf8; + +// std::clog / std::cout / std::cerr +inline constexpr auto stdio_encoding = logical_encoding::locale; + +// getenv +inline constexpr auto environment_encoding = logical_encoding::locale; + +// std::exception::what() +inline constexpr auto exception_encoding = logical_encoding::active_locale; + + + + + +template +struct is_character : public std::false_type { }; + +template <> +struct is_character : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_character : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_character : public std::true_type { }; +#endif // C++20 +template <> +struct is_character : public std::true_type { }; +template <> +struct is_character : public std::true_type { }; + + + + + +template +MPT_CONSTEXPRINLINE unsigned char char_value(T x) noexcept = delete; + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char x) noexcept { + return static_cast(x); +} + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(unsigned char x) noexcept { + return static_cast(x); +} + +#if MPT_CXX_AT_LEAST(20) +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char8_t x) noexcept { + return static_cast(x); +} +#endif // C++20 + + + + + +template +struct unsafe_char_converter { }; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(wchar_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr wchar_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char8_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char8_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // C++20 + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char16_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char16_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char32_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template +constexpr Tdstchar unsafe_char_convert(Tsrcchar src) noexcept { + return mpt::unsafe_char_converter::encode(mpt::unsafe_char_converter::decode(src)); +} + + + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +using widestring = std::wstring; +using widechar = wchar_t; +#define MPT_WIDECHAR(x) L##x +#define MPT_WIDELITERAL(x) L##x +#define MPT_WIDESTRING(x) std::wstring(L##x) +#else // MPT_COMPILER_QUIRK_NO_WCHAR +using widestring = std::u32string; +using widechar = char32_t; +#define MPT_WIDECHAR(x) U##x +#define MPT_WIDELITERAL(x) U##x +#define MPT_WIDESTRING(x) std::u32string(U##x) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +template +struct common_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return common_encoding_tag; + } +}; + +template +struct logical_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return logical_encoding_tag; + } +}; + + + +using lstring = std::basic_string>; + +using source_string = std::basic_string>; +using exception_string = std::basic_string>; + +#if MPT_OS_WINDOWS + +template +struct windows_char_traits { }; +template <> +struct windows_char_traits { using string_type = mpt::lstring; }; +template <> +struct windows_char_traits { using string_type = std::wstring; }; + +using tstring = windows_char_traits::string_type; + +using winstring = mpt::tstring; + +#endif // MPT_OS_WINDOWS + + + +#if MPT_CXX_AT_LEAST(20) + +using u8string = std::u8string; +using u8char = char8_t; +#define MPT_U8CHAR(x) u8##x +#define MPT_U8LITERAL(x) u8##x +#define MPT_U8STRING(x) std::u8string(u8##x) + +#else // !C++20 + +using u8string = std::basic_string>; +using u8char = char; +#define MPT_U8CHAR(x) x +#define MPT_U8LITERAL(x) x +#define MPT_U8STRING(x) mpt::u8string(x) + +// mpt::u8string is a moderately type-safe string that is meant to contain +// UTF-8 encoded char bytes. +// +// mpt::u8string is not implicitely convertible to/from std::string, but +// it is convertible to/from C strings the same way as std::string is. +// +// The implementation of mpt::u8string is a compromise of compatibilty +// with implementation-defined STL details, efficiency, source code size, +// executable bloat, type-safety and simplicity. +// +// mpt::u8string is not meant to be used directly though. +// mpt::u8string is meant as an alternative implementaion to std::wstring +// for implementing the unicode string type mpt::ustring. + +#endif // C++20 + + + +#if !defined(MPT_USTRING_MODE_UTF8_FORCE) && (MPT_COMPILER_MSVC || (MPT_DETECTED_MFC && defined(UNICODE))) +// Use wide strings for MSVC because this is the native encoding on +// microsoft platforms. +#define MPT_USTRING_MODE_WIDE 1 +#define MPT_USTRING_MODE_UTF8 0 +#else +#define MPT_USTRING_MODE_WIDE 0 +#define MPT_USTRING_MODE_UTF8 1 +#endif + +// mpt::ustring +// +// mpt::ustring is a string type that can hold unicode strings. +// It is implemented as a std::basic_string either based on wchar_t (i.e. the +// same as std::wstring) or a custom-defined char_traits class that is derived +// from std::char_traits. +// The selection of the underlying implementation is done at compile-time. +// MPT_UCHAR, MPT_ULITERAL and MPT_USTRING are macros that ease construction +// of ustring char literals, ustring char array literals and ustring objects +// from ustring char literals that work consistently in both modes. +// Note that these are not supported for non-ASCII characters appearing in +// the macro argument. +// Also note that, as both UTF8 and UTF16 (it is less of an issue for UTF32) +// are variable-length encodings and mpt::ustring is implemented as a +// std::basic_string, all member functions that require individual character +// access will not work consistently or even at all in a meaningful way. +// This in particular affects operator[], find() and substr(). +// The code makes no effort in preventing these or generating warnings when +// these are used on mpt::ustring objects. However, compiling in the +// respectively other mpt::ustring mode will catch most of these anyway. + +#if MPT_USTRING_MODE_WIDE +#if MPT_USTRING_MODE_UTF8 +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = std::wstring; +using uchar = wchar_t; +#define MPT_UCHAR(x) L##x +#define MPT_ULITERAL(x) L##x +#define MPT_USTRING(x) std::wstring(L##x) + +#endif // MPT_USTRING_MODE_WIDE + +#if MPT_USTRING_MODE_UTF8 +#if MPT_USTRING_MODE_WIDE +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = mpt::u8string; +using uchar = mpt::u8char; +#define MPT_UCHAR(x) MPT_U8CHAR(x) +#define MPT_ULITERAL(x) MPT_U8LITERAL(x) +#define MPT_USTRING(x) MPT_U8STRING(x) + +#endif // MPT_USTRING_MODE_UTF8 + + + +template +struct make_string_type { }; + +template +struct make_string_type> { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = typename make_string_type::type; +}; + +#if MPT_DETECTED_MFC + +template <> +struct make_string_type { + using type = CStringW; +}; + +template <> +struct make_string_type { + using type = CStringA; +}; + +#endif // MPT_DETECTED_MFC + + + +template +struct is_string_type : public std::false_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_string_type : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_string_type : public std::true_type { }; +#endif // C++20 +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if MPT_DETECTED_MFC +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#endif // MPT_DETECTED_MFC +template +struct is_string_type> : public std::true_type { }; + + + +template +inline typename mpt::make_string_type::type as_string(const T & str) { + if constexpr (std::is_pointer::type>::value) { + return str ? typename mpt::make_string_type::type{str} : typename mpt::make_string_type::type{}; + } else { + return str; + } +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TYPES_HPP Property changes on: src/mpt/string/types.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/utility.hpp =================================================================== --- src/mpt/string/utility.hpp (nonexistent) +++ src/mpt/string/utility.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_UTILITY_HPP +#define MPT_STRING_UTILITY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// string_traits abstract the API of underlying string classes, in particular they allow adopting to CString without having to specialize for CString explicitly + +template +struct string_traits { + + using string_type = Tstring; + using size_type = typename string_type::size_type; + using char_type = typename string_type::value_type; + + static inline std::size_t length(const string_type & str) { + return str.length(); + } + + static inline void reserve(string_type & str, std::size_t size) { + str.reserve(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + return str.append(a); + } + static inline string_type & append(string_type & str, string_type && a) { + return str.append(std::move(a)); + } + static inline string_type & append(string_type & str, std::size_t count, char_type c) { + return str.append(count, c); + } + + static inline string_type pad(string_type str, std::size_t left, std::size_t right) { + str.insert(str.begin(), left, char_type(' ')); + str.insert(str.end(), right, char_type(' ')); + return str; + } +}; + +#if MPT_DETECTED_MFC + +template <> +struct string_traits { + + using string_type = CStringA; + using size_type = int; + using char_type = typename CStringA::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +template <> +struct string_traits { + + using string_type = CStringW; + using size_type = int; + using char_type = typename CStringW::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +#endif // MPT_DETECTED_MFC + + +template +struct char_constants { + static inline constexpr Tchar space = ' '; + static inline constexpr Tchar a = 'a'; + static inline constexpr Tchar z = 'z'; + static inline constexpr Tchar A = 'A'; + static inline constexpr Tchar Z = 'Z'; + static inline constexpr Tchar lf = '\n'; + static inline constexpr Tchar cr = '\r'; + static inline constexpr Tchar tab = '\t'; + static inline constexpr Tchar comma = ','; +}; + +template <> +struct char_constants { + static inline constexpr char space = ' '; + static inline constexpr char a = 'a'; + static inline constexpr char z = 'z'; + static inline constexpr char A = 'A'; + static inline constexpr char Z = 'Z'; + static inline constexpr char lf = '\n'; + static inline constexpr char cr = '\r'; + static inline constexpr char tab = '\t'; + static inline constexpr char comma = ','; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct char_constants { + static inline constexpr wchar_t space = L' '; + static inline constexpr wchar_t a = L'a'; + static inline constexpr wchar_t z = L'z'; + static inline constexpr wchar_t A = L'A'; + static inline constexpr wchar_t Z = L'Z'; + static inline constexpr wchar_t lf = L'\n'; + static inline constexpr wchar_t cr = L'\r'; + static inline constexpr wchar_t tab = L'\t'; + static inline constexpr wchar_t comma = L','; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct char_constants { + static inline constexpr char8_t space = u8' '; + static inline constexpr char8_t a = u8'a'; + static inline constexpr char8_t z = u8'z'; + static inline constexpr char8_t A = u8'A'; + static inline constexpr char8_t Z = u8'Z'; + static inline constexpr char8_t lf = u8'\n'; + static inline constexpr char8_t cr = u8'\r'; + static inline constexpr char8_t tab = u8'\t'; + static inline constexpr char8_t comma = u8','; +}; +#endif + +template <> +struct char_constants { + static inline constexpr char16_t space = u' '; + static inline constexpr char16_t a = u'a'; + static inline constexpr char16_t z = u'z'; + static inline constexpr char16_t A = u'A'; + static inline constexpr char16_t Z = u'Z'; + static inline constexpr char16_t lf = u'\n'; + static inline constexpr char16_t cr = u'\r'; + static inline constexpr char16_t tab = u'\t'; + static inline constexpr char16_t comma = u','; +}; + +template <> +struct char_constants { + static inline constexpr char32_t space = U' '; + static inline constexpr char32_t a = U'a'; + static inline constexpr char32_t z = U'z'; + static inline constexpr char32_t A = U'A'; + static inline constexpr char32_t Z = U'Z'; + static inline constexpr char32_t lf = U'\n'; + static inline constexpr char32_t cr = U'\r'; + static inline constexpr char32_t tab = U'\t'; + static inline constexpr char32_t comma = U','; +}; + + +template +inline Tstring default_whitespace() { + Tstring result; + result.reserve(4); + result.push_back(char_constants::space); + result.push_back(char_constants::lf); + result.push_back(char_constants::cr); + result.push_back(char_constants::tab); + return result; +} + + +// Remove whitespace at start of string +template +inline Tstring trim_left(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_first_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin(), str.begin() + pos); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_last_of(whitespace) == str.length() - 1) { + return Tstring(); + } + return str; +} + +// Remove whitespace at end of string +template +inline Tstring trim_right(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_last_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin() + pos + 1, str.end()); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_first_of(whitespace) == 0) { + return Tstring(); + } + return str; +} + +// Remove whitespace at start and end of string +template +inline Tstring trim(Tstring str, const Tstring & whitespace = default_whitespace()) { + return trim_right(trim_left(str, whitespace), whitespace); +} + + +template +inline bool starts_with(const Tstring & str, const Tmatch & match) { + return (str.find(typename mpt::make_string_type::type{match}) == 0); +} + +template +inline bool ends_with(const Tstring & str, const Tmatch & match) { + return (str.rfind(typename mpt::make_string_type::type{match}) == (str.length() - typename mpt::make_string_type::type{match}.length())); +} + + +template +inline constexpr Tchar to_lower_ascii(Tchar c) noexcept { + if (char_constants::A <= c && c <= char_constants::Z) { + c += char_constants::a - char_constants::A; + } + return c; +} + +template +inline constexpr Tchar to_upper_ascii(Tchar c) noexcept { + if (char_constants::a <= c && c <= char_constants::z) { + c -= char_constants::a - char_constants::A; + } + return c; +} + + + +template +inline std::vector split(const Tstring & str, const Tstring & sep = Tstring(1, char_constants::comma)) { + std::vector vals; + std::size_t pos = 0; + while (str.find(sep, pos) != std::string::npos) { + vals.push_back(str.substr(pos, str.find(sep, pos) - pos)); + pos = str.find(sep, pos) + sep.length(); + } + if (!vals.empty() || (str.substr(pos).length() > 0)) { + vals.push_back(str.substr(pos)); + } + return vals; +} + + + +template +inline Tstring combine(const std::vector & vals, const Tstring & sep = Tstring(1, char_constants::comma)) { + Tstring str; + for (std::size_t i = 0; i < vals.size(); ++i) { + if (i > 0) { + str += sep; + } + str += vals[i]; + } + return str; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_UTILITY_HPP Property changes on: src/mpt/string/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/convert.hpp =================================================================== --- src/mpt/string_convert/convert.hpp (nonexistent) +++ src/mpt/string_convert/convert.hpp (working copy) @@ -0,0 +1,1131 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_CONVERT_HPP +#define MPT_STRING_CONVERT_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +/* +default 1:1 mapping +inline constexpr char32_t CharsetTableISO8859_1[256] = { + 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, + 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, + 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, + 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, + 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, + 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, + 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, + 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, + 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, + 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, + 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, + 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, + 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, + 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, + 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, + 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff +}; +*/ + +inline constexpr char32_t CharsetTableISO8859_15[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableWindows1252[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f, + 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableCP850[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00F8, 0x00a3, 0x00D8, 0x00D7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00AE, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00E3, 0x00C3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250c, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00df, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00b5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00b1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00f7, 0x00B8, 0x00b0, 0x00A8, 0x00b7, 0x00B9, 0x00B3, 0x00b2, 0x25a0, 0x00a0}; + +inline constexpr char32_t CharsetTableCP437[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0}; + +template +inline mpt::widestring decode_8bit(const Tsrcstring & str, const char32_t (&table)[256], mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + std::size_t c = static_cast(mpt::char_value(str[i])); + if (c < std::size(table)) { + res.push_back(static_cast(table[c])); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_8bit(const mpt::widestring & str, const char32_t (&table)[256], char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + bool found = false; + // Try non-control characters first. + // In cases where there are actual characters mirrored in this range (like in AMS/AMS2 character sets), + // characters in the common range are preferred this way. + for (std::size_t x = 0x20; x < std::size(table); ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + if (!found) { + // try control characters + for (std::size_t x = 0x00; x < std::size(table) && x < 0x20; ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + } + if (!found) { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_ascii(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_ascii(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_iso8859_1(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + MPT_UNUSED(replacement); + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + res.push_back(static_cast(static_cast(c))); + } + return res; +} + +template +inline Tdststring encode_iso8859_1(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0xff) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + + + +template +inline mpt::widestring decode_utf8(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + const Tsrcstring & in = str; + mpt::widestring out; + // state: + std::size_t charsleft = 0; + char32_t ucs4 = 0; + for (uint8 c : in) { + if (charsleft == 0) { + if ((c & 0x80) == 0x00) { + out.push_back(static_cast(c)); + } else if ((c & 0xE0) == 0xC0) { + ucs4 = c & 0x1F; + charsleft = 1; + } else if ((c & 0xF0) == 0xE0) { + ucs4 = c & 0x0F; + charsleft = 2; + } else if ((c & 0xF8) == 0xF0) { + ucs4 = c & 0x07; + charsleft = 3; + } else { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + } else { + if ((c & 0xC0) != 0x80) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + ucs4 <<= 6; + ucs4 |= c & 0x3F; + charsleft--; + if (charsleft == 0) { + if constexpr (sizeof(mpt::widechar) == 2) { + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(ucs4)); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(hi_sur); + out.push_back(lo_sur); + } + } else { + out.push_back(static_cast(ucs4)); + } + ucs4 = 0; + } + } + } + if (charsleft != 0) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + return out; +} + +template +inline Tdststring encode_utf8(const mpt::widestring & str, char replacement = '?') { + const mpt::widestring & in = str; + Tdststring out; + for (std::size_t i = 0; i < in.length(); i++) { + mpt::widechar wc = in[i]; + char32_t ucs4 = 0; + if constexpr (sizeof(mpt::widechar) == 2) { + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + } else { + ucs4 = static_cast(wc); + } + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + continue; + } + uint8 utf8[6]; + std::size_t numchars = 0; + for (numchars = 0; numchars < 6; numchars++) { + utf8[numchars] = ucs4 & 0x3F; + ucs4 >>= 6; + if (ucs4 == 0) { + break; + } + } + numchars++; + if (numchars == 1) { + out.push_back(utf8[0]); + continue; + } + if (numchars == 2 && utf8[numchars - 1] == 0x01) { + // generate shortest form + out.push_back(utf8[0] | 0x40); + continue; + } + std::size_t charsleft = numchars; + while (charsleft > 0) { + if (charsleft == numchars) { + out.push_back(utf8[charsleft - 1] | (((1 << numchars) - 1) << (8 - numchars))); + } else { + // cppcheck false-positive + // cppcheck-suppress arrayIndexOutOfBounds + out.push_back(utf8[charsleft - 1] | 0x80); + } + charsleft--; + } + } + return out; +} + + + +template +inline Tdststring utf32_from_utf16(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 2); + static_assert(sizeof(typename Tdststring::value_type) == 4); + MPT_UNUSED(replacement); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char16_t wc = static_cast(static_cast(in[i])); + char32_t ucs4 = 0; + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + out.push_back(static_cast(static_cast(ucs4))); + } + return out; +} + +template +inline Tdststring utf16_from_utf32(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 4); + static_assert(sizeof(typename Tdststring::value_type) == 2); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char32_t ucs4 = static_cast(static_cast(in[i])); + if (ucs4 > 0x1fffff) { + out.push_back(static_cast(static_cast(replacement))); + ucs4 = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(static_cast(ucs4))); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(static_cast(hi_sur)); + out.push_back(static_cast(lo_sur)); + } + } + return out; +} + + + +#if MPT_OS_WINDOWS + +inline bool has_codepage(UINT cp) { + return IsValidCodePage(cp) ? true : false; +} + +inline bool windows_has_encoding(common_encoding encoding) { + bool result = false; + switch (encoding) { + case common_encoding::utf8: + result = has_codepage(CP_UTF8); + break; + case common_encoding::ascii: + result = has_codepage(20127); + break; + case common_encoding::iso8859_1: + result = has_codepage(28591); + break; + case common_encoding::iso8859_15: + result = has_codepage(28605); + break; + case common_encoding::cp850: + result = has_codepage(850); + break; + case common_encoding::cp437: + result = has_codepage(437); + break; + case common_encoding::windows1252: + result = has_codepage(1252); + break; + } + return result; +} + +inline bool windows_has_encoding(logical_encoding encoding) { + bool result = false; + switch (encoding) { + case logical_encoding::locale: + result = true; + break; + case logical_encoding::active_locale: + result = false; + break; + } + return result; +} + +inline UINT codepage_from_encoding(logical_encoding encoding) { + UINT result = 0; + switch (encoding) { + case logical_encoding::locale: + result = CP_ACP; + break; + case logical_encoding::active_locale: + result = 0; + break; + } + return result; +} + +inline UINT codepage_from_encoding(common_encoding encoding) { + UINT result = 0; + switch (encoding) { + case common_encoding::utf8: + result = CP_UTF8; + break; + case common_encoding::ascii: + result = 20127; + break; + case common_encoding::iso8859_1: + result = 28591; + break; + case common_encoding::iso8859_15: + result = 28605; + break; + case common_encoding::cp850: + result = 850; + break; + case common_encoding::cp437: + result = 437; + break; + case common_encoding::windows1252: + result = 1252; + break; + } + return result; +} + +template +inline Tdststring encode_codepage(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + Tdststring encoded_string; + int required_size = WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), nullptr, 0, nullptr, nullptr); + if (required_size > 0) { + encoded_string.resize(required_size); + WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), reinterpret_cast(encoded_string.data()), required_size, nullptr, nullptr); + } + return encoded_string; +} + +template +inline mpt::widestring decode_codepage(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + mpt::widestring decoded_string; + int required_size = MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), nullptr, 0); + if (required_size > 0) { + decoded_string.resize(required_size); + MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), decoded_string.data(), required_size); + } + return decoded_string; +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_OS_DJGPP + +inline common_encoding djgpp_get_locale_encoding() { + uint16 active_codepage = 437; + uint16 system_codepage = 437; + __dpmi_regs regs; + std::memset(®s, 0, sizeof(__dpmi_regs)); + regs.x.ax = 0x6601; + if (__dpmi_int(0x21, ®s) == 0) { + int cf = (regs.x.flags >> 0) & 1; + if (cf == 0) { + active_codepage = regs.x.bx; + system_codepage = regs.x.dx; + } + } + common_encoding result = common_encoding::cp437; + if (active_codepage == 0) { + result = common_encoding::cp437; + } else if (active_codepage == 437) { + result = common_encoding::cp437; + } else if (active_codepage == 850) { + result = common_encoding::cp850; + } else if (system_codepage == 437) { + result = common_encoding::cp437; + } else if (system_codepage == 850) { + result = common_encoding::cp850; + } else { + result = common_encoding::cp437; + } + return result; +} + +#endif // MPT_OS_DJGPP + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + +// Note: +// +// std::codecvt::out in LLVM libc++ does not advance in and out pointers when +// running into a non-convertible character. This can happen when no locale is +// set on FreeBSD or MacOSX. This behaviour violates the C++ standard. +// +// We apply the following (albeit costly, even on other platforms) work-around: +// If the conversion errors out and does not advance the pointers at all, we +// retry the conversion with a space character prepended to the string. If it +// still does error out, we retry the whole conversion character by character. +// This is costly even on other platforms in one single case: The first +// character is an invalid Unicode code point or otherwise not convertible. Any +// following non-convertible characters are not a problem. + +inline std::wstring decode_locale_impl(const std::string & str, const std::locale & locale, wchar_t replacement = L'\uFFFD', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::wstring(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const char * in_begin = str.data(); + const char * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + wchar_t * out_begin = out.data(); + wchar_t * out_end = out.data() + out.size(); + const char * in_next = nullptr; + wchar_t * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + decode_locale_impl(std::string(" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return decode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::wstring(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::wstring(out.data(), out_next); +} + +template +inline mpt::widestring decode_locale(const std::locale & locale, const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return decode_locale_impl(src, locale); + } else { + return decode_locale_impl(std::string(src.begin(), src.end()), locale); + } +} + +inline std::string encode_locale_impl(const std::wstring & str, const std::locale & locale, char replacement = '?', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::string(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const wchar_t * in_begin = str.data(); + const wchar_t * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + char * out_begin = out.data(); + char * out_end = out.data() + out.size(); + const wchar_t * in_next = nullptr; + char * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + encode_locale_impl(std::wstring(L" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return encode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::string(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::string(out.data(), out_next); +} + +template +inline Tdststring encode_locale(const std::locale & locale, const mpt::widestring & src) { + if constexpr (std::is_same::value) { + return encode_locale_impl(src, locale); + } else { + const std::string tmp = encode_locale_impl(src, locale); + return Tdststring(tmp.begin(), tmp.end()); + } +} + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +#if MPT_OS_WINDOWS +template +inline Tdststring encode(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline Tdststring encode(const std::locale & locale, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline Tdststring encode(const char32_t (&table)[256], const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_8bit(src, table); +} + +template +inline Tdststring encode(common_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return encode_utf8(src); + break; + case common_encoding::ascii: + return encode_ascii(src); + break; + case common_encoding::iso8859_1: + return encode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return encode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return encode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return encode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return encode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline Tdststring encode(logical_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return encode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return encode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return encode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return encode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + +#if MPT_OS_WINDOWS +template +inline mpt::widestring decode(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline mpt::widestring decode(const std::locale & locale, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline mpt::widestring decode(const char32_t (&table)[256], const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_8bit(src, table); +} + +template +inline mpt::widestring decode(common_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return decode_utf8(src); + break; + case common_encoding::ascii: + return decode_ascii(src); + break; + case common_encoding::iso8859_1: + return decode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return decode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return decode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return decode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return decode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline mpt::widestring decode(logical_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return decode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return decode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return decode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return decode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + + + +inline bool is_utf8(const std::string & str) { + return (str == encode(common_encoding::utf8, decode(common_encoding::utf8, str))); +} + + + +template +struct string_converter { +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::wstring; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct string_converter { + using string_type = std::u8string; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(common_encoding::utf8, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(common_encoding::utf8, src); + } +}; +#endif // C++10 + +template <> +struct string_converter { + using string_type = std::u16string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } +}; + +#if defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#else // !MPT_COMPILER_QUIRK_NO_WCHAR +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } +}; +#endif // MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_DETECTED_MFC + +template <> +struct string_converter { + using string_type = CStringW; + static inline mpt::widestring decode(const string_type & src) { + return mpt::widestring(src.GetString()); + } + static inline string_type encode(const mpt::widestring & src) { + return src.c_str(); + } +}; + +template <> +struct string_converter { + using string_type = CStringA; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(mpt::logical_encoding::locale, std::string(src.GetString())); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(mpt::logical_encoding::locale, src).c_str(); + } +}; + +#endif // MPT_DETECTED_MFC + +template ::type>::value, bool> = true> +inline Tdststring convert(const Tsrcstring & src) { + if constexpr (std::is_same::type>::value) { + return mpt::as_string(src); + } else { + return string_converter::encode(string_converter::decode(mpt::as_string(src))); + } +} + +template ::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding to, const Tsrcstring & src) { + return mpt::encode(to, string_converter::decode(mpt::as_string(src))); +} + +template ::type, std::string>::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding from, const Tsrcstring & src) { + return string_converter::encode(mpt::decode(from, mpt::as_string(src))); +} + +template ::type>::value, bool> = true> +inline Tdststring convert(Tto to, Tfrom from, const Tsrcstring & src) { + return mpt::encode(to, mpt::decode(from, mpt::as_string(src))); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_CONVERT_HPP Property changes on: src/mpt/string_convert/convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/macros.hpp =================================================================== --- src/mpt/string_convert/macros.hpp (nonexistent) +++ src/mpt/string_convert/macros.hpp (working copy) @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_MACROS_HPP +#define MPT_STRING_CONVERT_MACROS_HPP + + + +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + + + +// The MPT_UTF8_STRING allows specifying UTF8 char arrays. +// The resulting type is mpt::ustring and the construction might require runtime translation, +// i.e. it is NOT generally available at compile time. +// Use explicit UTF8 encoding, +// i.e. U+00FC (LATIN SMALL LETTER U WITH DIAERESIS) would be written as "\xC3\xBC". +#define MPT_UTF8_STRING(x) mpt::convert(mpt::common_encoding::utf8, std::string{x}) + + + +#endif // MPT_STRING_CONVERT_MACROS_HPP Property changes on: src/mpt/string_convert/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/tests/tests_string_convert.hpp =================================================================== --- src/mpt/string_convert/tests/tests_string_convert.hpp (nonexistent) +++ src/mpt/string_convert/tests/tests_string_convert.hpp (working copy) @@ -0,0 +1,227 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP +#define MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/string_convert/macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string_convert{ + +MPT_TEST_GROUP_INLINE("mpt/string_convert") +{ + // MPT_UTF8_STRING version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_UTF8_STRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_UTF8_STRING("a")); + +#if MPT_OS_EMSCRIPTEN + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("\xe2\x8c\x82")), "\xe2\x8c\x82"); +#endif // MPT_OS_EMSCRIPTEN + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) (\xC3\xA4) and CJK U+5BB6 (\xE5\xAE\xB6) + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + + // wide L"" version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), L"a"); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), L"a"); + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4428) // universal-character-name encountered in source +#endif + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"abc")); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u5BB6xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace string_convert +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP Property changes on: src/mpt/string_convert/tests/tests_string_convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/system_error/system_error.hpp =================================================================== --- src/mpt/system_error/system_error.hpp (nonexistent) +++ src/mpt/system_error/system_error.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP +#define MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#if MPT_OS_WINDOWS +#include +#if MPT_OS_WINDOWS_WINRT +#include +#endif // MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +namespace windows { + + + +inline mpt::ustring GetErrorMessage(DWORD errorCode, HANDLE hModule = NULL) { +#if MPT_OS_WINDOWS_WINRT + std::vector msgbuf(65536); + if (FormatMessage( + (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + msgbuf.data(), + mpt::saturate_cast(msgbuf.size()), + NULL) + == 0) + { + DWORD e = GetLastError(); + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + return mpt::convert(mpt::winstring{msgbuf.data()}); +#else + mpt::ustring message; + void * lpMsgBuf = nullptr; + if (FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&lpMsgBuf, + 0, + NULL) + == 0) + { + DWORD e = GetLastError(); + if (lpMsgBuf) { + LocalFree(lpMsgBuf); + } + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + if (!lpMsgBuf) { + return {}; + } + try { + message = mpt::convert(mpt::winstring{static_cast(lpMsgBuf)}); + } catch (mpt::out_of_memory e) { + LocalFree(lpMsgBuf); + mpt::rethrow_out_of_memory(e); + } + LocalFree(lpMsgBuf); + return message; +#endif +} + + +class error + : public std::runtime_error { +public: + error(DWORD errorCode, HANDLE hModule = NULL) + : std::runtime_error(mpt::convert(mpt::exception_encoding, MPT_UFORMAT_MESSAGE("Windows Error: 0x{}: {}")(mpt::format::hex0<8>(errorCode), GetErrorMessage(errorCode, hModule)))) { + return; + } +}; + + +inline HANDLE CheckFileHANDLE(HANDLE handle) { + if (handle == INVALID_HANDLE_VALUE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline HANDLE CheckHANDLE(HANDLE handle) { + if (handle == NULL) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline void CheckBOOL(BOOL result) { + if (result == FALSE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + +inline void ExpectError(DWORD expected) { + DWORD err = ::GetLastError(); + if (err != expected) { + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + + +} // namespace windows + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP Property changes on: src/mpt/system_error/system_error.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test.hpp =================================================================== --- src/mpt/test/test.hpp (nonexistent) +++ src/mpt/test/test.hpp (working copy) @@ -0,0 +1,551 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_HPP +#define MPT_TEST_TEST_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/source_location.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +template +struct is_to_stream_writable : std::false_type { }; + +template +struct is_to_stream_writable() << std::declval())>> : std::true_type { }; + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + std::ostringstream s; + s << x; + return s.str(); +} + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + return typeid(x).name(); +} + +inline std::string get_exception_text() { + std::string result; + try { + throw; + } catch (const std::exception & e) { + result = e.what(); + } catch (...) { + result = "unknown exception"; + } + return result; +} + +struct result_success { +}; +struct result_failure { + std::string text{}; +}; +struct result_unexpected_exception { + std::string text{}; +}; + +struct result { + std::variant info{std::monostate{}}; +}; + +struct statistics_counters { + std::size_t total{0}; + std::size_t run{0}; + std::size_t successes{0}; + std::size_t failures{0}; + std::size_t unexpected_exceptions{0}; + std::size_t completed{0}; + constexpr statistics_counters & operator+=(const statistics_counters & other) noexcept { + total += other.total; + run += other.run; + successes += other.successes; + failures += other.failures; + unexpected_exceptions += other.unexpected_exceptions; + completed += other.completed; + return *this; + } +}; + +struct group_statistics { + statistics_counters tests{}; + statistics_counters cases{}; + statistics_counters local_cases{}; +}; + +struct global_statistics { + statistics_counters groups{}; + statistics_counters tests{}; + statistics_counters cases{}; + std::map individual_group_statistics{}; + explicit constexpr operator bool() noexcept { + return succeeded(); + } + constexpr bool operator!() noexcept { + return failed(); + } + constexpr bool succeeded() noexcept { + return groups.successes == groups.run; + } + constexpr bool failed() noexcept { + return groups.failures > 0 || groups.unexpected_exceptions > 0; + } +}; + +class reporter_interface { +protected: + virtual ~reporter_interface() = default; + +public: + virtual void run_begin(const mpt::source_location & loc) = 0; + virtual void group_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void test_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void case_run(const mpt::source_location & loc) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) = 0; + virtual void case_result(const mpt::source_location & loc, const mpt::test::result & result) = 0; + virtual void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) = 0; + virtual void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) = 0; + virtual void run_end(const mpt::source_location & loc, const global_statistics & statistics) = 0; + virtual void immediate_breakpoint() = 0; +}; + +class silent_reporter + : public reporter_interface { +public: + silent_reporter() = default; + ~silent_reporter() override = default; + +public: + virtual void run_begin(const mpt::source_location &) override { + } + virtual void group_begin(const mpt::source_location &, const char *) override { + } + virtual void test_begin(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &) override { + } + virtual void case_run(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *, const char *) override { + } + virtual void case_result(const mpt::source_location &, const mpt::test::result &) override { + } + virtual void test_end(const mpt::source_location &, const char *, const statistics_counters &) override { + } + virtual void group_end(const mpt::source_location &, const char *, const group_statistics &) override { + } + virtual void run_end(const mpt::source_location &, const global_statistics &) override { + } + virtual void immediate_breakpoint() override { + } +}; + +class simple_reporter : public reporter_interface { +private: + std::ostream & s; + +public: + simple_reporter(std::ostream & s_) + : s(s_) { + s.flush(); + } + ~simple_reporter() override { + s.flush(); + } + +public: + void run_begin(const mpt::source_location & loc) override { + static_cast(loc); + s << "Running test suite ..." << std::endl; + } + void group_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << "Running group '" << name << "' ..." << std::endl; + } + void test_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << " Running test '" << name << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc) override { + static_cast(loc); + s << " Checking ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_e) override { + static_cast(loc); + s << " Checking '" << text_e << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) override { + static_cast(loc); + if (text_ex) { + s << " Checking '" << text_e << " throws " << text_ex << "' ..." << std::endl; + } else { + s << " Checking '" << text_e << " throws' ..." << std::endl; + } + } + void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) override { + static_cast(loc); + s << " Checking '" << text_a << " " << text_cmp << " " << text_b << "' ..." << std::endl; + } + void case_result(const mpt::source_location & loc, const mpt::test::result & result) override { + static_cast(loc); + s << " Checking done: "; + if (std::holds_alternative(result.info)) { + s << "Success."; + } else if (std::holds_alternative(result.info)) { + s << "FAILURE: " << std::get(result.info).text; + } else if (std::holds_alternative(result.info)) { + s << "UNEXPECTED EXCEPTION: " << std::get(result.info).text; + } + s << std::endl; + } + void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) override { + static_cast(loc); + static_cast(counters); + s << " Running test '" << name << "' done." << std::endl; + } + void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) override { + static_cast(loc); + static_cast(statistics); + s << "Running group '" << name << "' done." << std::endl; + } + void run_end(const mpt::source_location & loc, const global_statistics & statistics) override { + static_cast(loc); + s << "Running test suite done." << std::endl; + s << "groups: " << statistics.groups.total << " | " << statistics.groups.successes << " passed"; + if (statistics.groups.failures || statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.failures << " FAILED"; + if (statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "tests: " << statistics.tests.total << " | " << statistics.tests.successes << " passed"; + if (statistics.tests.failures || statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.failures << " FAILED"; + if (statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "checks: " << statistics.cases.total << " | " << statistics.cases.successes << " passed"; + if (statistics.cases.failures || statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.failures << " FAILED"; + if (statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + } + void immediate_breakpoint() override { + return; + } +}; + +struct group; + +struct context { + mpt::test::group & group; + mpt::test::reporter_interface & reporter; + mpt::test::group_statistics statistics{}; +}; + +using void_context_function = void (*)(mpt::test::context &); + +struct group { + group * next{nullptr}; + const char * name{""}; + void_context_function func{nullptr}; + inline group(const char * name_, void_context_function f) + : name(name_) + , func(f) { + next = group_list(); + group_list() = this; + } + group_statistics run(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + mpt::test::context context{*this, reporter}; + context.reporter.group_begin(loc, name); + if (func) { + func(context); + } + context.reporter.group_end(loc, name, context.statistics); + return context.statistics; + } + +public: + [[nodiscard]] static inline group *& group_list() noexcept { + static group * group_list = nullptr; + return group_list; + } +}; + +inline global_statistics run_all(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + global_statistics statistics{}; + reporter.run_begin(loc); + for (group * g = group::group_list(); g; g = g->next) { + statistics.groups.total++; + statistics.groups.run++; + group_statistics s = g->run(reporter, loc); + if (s.tests.unexpected_exceptions) { + statistics.groups.unexpected_exceptions++; + } else if (s.tests.failures) { + statistics.groups.failures++; + } else { + statistics.groups.successes++; + } + statistics.tests += s.tests; + statistics.cases += s.cases; + statistics.groups.completed++; + statistics.individual_group_statistics[g->name] = s; + } + reporter.run_end(loc, statistics); + return statistics; +} + +struct test { + + mpt::test::context & context; + const char * name{""}; + mpt::source_location source_location{mpt::source_location::current()}; + void (*breakpoint)(void){nullptr}; + + test(const test &) = delete; + test & operator=(const test &) = delete; + + inline test(mpt::test::context & context_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + inline test(mpt::test::context & context_, const char * name_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , name(name_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + + inline ~test() { + report_test_end(); + } + + void immediate_breakpoint() { + if (breakpoint) { + breakpoint(); + } else { + context.reporter.immediate_breakpoint(); + } + } + + void report_test_begin() { + context.statistics.tests.total++; + context.statistics.tests.run++; + context.statistics.local_cases = statistics_counters{}; + context.reporter.test_begin(source_location, name); + } + + void report_run() { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location); + } + void report_run(const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_e); + } + void report_run(const char * text_ex, const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_ex, text_e); + } + void report_run(const char * text_a, const char * text_cmp, const char * text_b) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_a, text_cmp, text_b); + } + + void report_result(mpt::test::result result) { + if (std::holds_alternative(result.info)) { + context.statistics.local_cases.successes++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.failures++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.unexpected_exceptions++; + } + context.statistics.local_cases.completed++; + context.reporter.case_result(source_location, result); + } + + void report_test_end() { + context.statistics.cases += context.statistics.local_cases; + if (context.statistics.local_cases.unexpected_exceptions) { + context.statistics.tests.unexpected_exceptions++; + } else if (context.statistics.local_cases.failures) { + context.statistics.tests.failures++; + } else { + context.statistics.tests.successes++; + } + context.statistics.tests.completed++; + context.reporter.test_end(source_location, name, context.statistics.local_cases); + } + + template ::value, bool>::type = true> + inline test & expect_throws(Tcallable c, const char * text_ex = nullptr, const char * text_e = nullptr) { + report_run(text_ex ? text_ex : typeid(Texception).name(), text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (const Texception &) { + result.info = mpt::test::result_success{}; + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect_throws_any(Tcallable c, const char * text_e = nullptr) { + report_run(nullptr, text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (...) { + result.info = mpt::test::result_success{}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::invoke(e))).name()); + mpt::test::result result; + try { + const auto ve = std::invoke(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::invoke(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::invoke(b))).name()); + mpt::test::result result; + try { + const auto va = std::invoke(a); + const auto vb = std::invoke(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr && e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::forward(e))).name()); + mpt::test::result result; + try { + const auto ve = std::forward(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::forward(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::forward(b))).name()); + mpt::test::result result; + try { + const auto va = std::forward(a); + const auto vb = std::forward(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } +}; + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_HPP Property changes on: src/mpt/test/test.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test_macros.hpp =================================================================== --- src/mpt/test/test_macros.hpp (nonexistent) +++ src/mpt/test/test_macros.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_MACROS_HPP +#define MPT_TEST_TEST_MACROS_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/preprocessor.hpp" +#include "mpt/test/test.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +#define MPT_TEST_GROUP_BEGIN(name) \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { +#define MPT_TEST_GROUP_END() \ + } \ + } \ + ; + +#define MPT_TEST_GROUP_INLINE_IDENTIFIER(identifier, name) \ + inline void MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_JOIN(mpt_test_group_name_, identifier) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_INLINE(name) \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_STATIC(name) \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + static mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_DELAYED(x) [&] { \ + return x; \ +} + +#define MPT_TEST_EXPECT mpt::test::test{context}.expect + +#define MPT_TEST_EXPECT_EXPR(e) mpt::test::test{mpt_test_context}.expect([&] { return e; }, #e) +#define MPT_TEST_EXPECT_CMP(a, cmp, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, [](const auto & a_, const auto & b_) { return a_ cmp b_; }, [&] { return b; }, #a, #cmp, #b) +#define MPT_TEST_EXPECT_THROWS_ANY(expr) mpt::test::test{mpt_test_context}.expect_throws_any([&] { expr; }, #expr) +#define MPT_TEST_EXPECT_THROWS(exception, expr) mpt::test::test{mpt_test_context}.expect_throws([&] { expr; }, #exception, #expr) + +#define MPT_TEST_EXPECT_EQUAL(a, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, std::equal_to<>{}, [&] { return b; }, #a, "==", #b) + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_MACROS_HPP Property changes on: src/mpt/test/test_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/guid.hpp =================================================================== --- src/mpt/uuid/guid.hpp (nonexistent) +++ src/mpt/uuid/guid.hpp (working copy) @@ -0,0 +1,284 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_GUID_HPP +#define MPT_UUID_GUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +// COM CLSID<->string conversion +// A CLSID string is not necessarily a standard UUID string, +// it might also be a symbolic name for the interface. +// (see CLSIDFromString ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms680589%28v=vs.85%29.aspx )) + +inline mpt::winstring CLSIDToString(CLSID clsid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromCLSID(clsid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromCLSID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromCLSID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + ::CoTaskMemFree(tmp); + tmp = nullptr; + return mpt::convert(str); +} + +inline CLSID StringToCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + // nothing + break; + case E_INVALIDARG: + clsid = CLSID(); + break; + case CO_E_CLASSSTRING: + clsid = CLSID(); + break; + case REGDB_E_CLASSNOTREG: + clsid = CLSID(); + break; + case REGDB_E_READREGDB: + clsid = CLSID(); + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + clsid = CLSID(); + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return clsid; +} + +inline bool VerifyStringToCLSID(const mpt::winstring & str_, CLSID & clsid) { + const std::wstring str = mpt::convert(str_); + bool result = false; + clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + +inline bool IsCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + bool result = false; + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + result = false; + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + result = false; + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + + +// COM IID<->string conversion + +inline IID StringToIID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + IID iid = IID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::IIDFromString(tmp.data(), &iid)) { + case S_OK: + // nothing + break; + case E_OUTOFMEMORY: + iid = IID(); + mpt::throw_out_of_memory(); + break; + case E_INVALIDARG: + iid = IID(); + break; + default: + iid = IID(); + throw std::logic_error("IIDFromString() failed."); + break; + } + return iid; +} + +inline mpt::winstring IIDToString(IID iid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromIID(iid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromIID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromIID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + return mpt::convert(str); +} + + +// General GUID<->string conversion. +// The string must/will be in standard GUID format: {4F9A455D-E7EF-4367-B2F0-0C83A38A5C72} + +inline GUID StringToGUID(const mpt::winstring & str) { + return StringToIID(str); +} + +inline mpt::winstring GUIDToString(GUID guid) { + std::vector tmp(256); + if (::StringFromGUID2(guid, tmp.data(), static_cast(tmp.size())) <= 0) { + throw std::logic_error("StringFromGUID2() failed."); + } + return mpt::convert(tmp.data()); +} + + +// Create a COM GUID + +inline GUID CreateGUID() { + GUID guid = GUID(); + switch (::CoCreateGuid(&guid)) { + case S_OK: + // nothing + break; + default: + guid = GUID(); + throw std::runtime_error("CoCreateGuid() failed."); + } + return guid; +} + + +// Checks the UUID against the NULL UUID. Returns false if it is NULL, true otherwise. + +inline bool IsValid(::UUID uuid) { + return false + || uuid.Data1 != 0 + || uuid.Data2 != 0 + || uuid.Data3 != 0 + || uuid.Data4[0] != 0 + || uuid.Data4[1] != 0 + || uuid.Data4[2] != 0 + || uuid.Data4[3] != 0 + || uuid.Data4[4] != 0 + || uuid.Data4[5] != 0 + || uuid.Data4[6] != 0 + || uuid.Data4[7] != 0; +} + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_GUID_HPP Property changes on: src/mpt/uuid/guid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/tests/tests_uuid.hpp =================================================================== --- src/mpt/uuid/tests/tests_uuid.hpp (nonexistent) +++ src/mpt/uuid/tests/tests_uuid.hpp (working copy) @@ -0,0 +1,95 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_HPP +#define MPT_BASE_TESTS_UUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/guid.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid { + +MPT_TEST_GROUP_INLINE("mpt/uuid") +{ + using namespace mpt::uuid_literals; + + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull).ToUString(), MPT_USTRING("2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32")); +#if MPT_OS_WINDOWS + constexpr mpt::UUID uuid_tmp = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid_tmp); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToGUID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToCLSID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")); +#endif // MPT_OS_WINDOWS + + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + +#if MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::IsValid(mpt::CreateGUID()), true); + { + mpt::UUID uuid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID::FromString(mpt::UUID(uuid).ToUString())); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToGUID(mpt::GUIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToIID(mpt::IIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToCLSID(mpt::CLSIDToString(uuid)))); + } + { + GUID guid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, static_cast(mpt::UUID::FromString(mpt::UUID(guid).ToUString()))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToGUID(mpt::GUIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToIID(mpt::IIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToCLSID(mpt::CLSIDToString(guid))), TRUE); + } +#endif // MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::GenerateLocalUseOnly(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng) != mpt::UUID::Generate(prng), true); + mpt::UUID a = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(a, mpt::UUID::FromString(a.ToUString())); + std::byte uuiddata[16]{}; + for (std::size_t i = 0; i < 16; ++i) { + uuiddata[i] = mpt::byte_cast(static_cast(i)); + } + static_assert(sizeof(mpt::UUID) == 16); + mpt::UUIDbin uuid2; + std::memcpy(&uuid2, uuiddata, 16); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(uuid2).ToUString(), MPT_USTRING("00010203-0405-0607-0809-0a0b0c0d0e0f")); + + constexpr mpt::UUID uuid3 = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid3); +} + +} // namespace uuid +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_HPP Property changes on: src/mpt/uuid/tests/tests_uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/uuid.hpp =================================================================== --- src/mpt/uuid/uuid.hpp (nonexistent) +++ src/mpt/uuid/uuid.hpp (working copy) @@ -0,0 +1,386 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_UUID_HPP +#define MPT_UUID_UUID_HPP + + + +#include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/random/random.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Microsoft on-disk layout +struct GUIDms { + uint32le Data1; + uint16le Data2; + uint16le Data3; + uint64be Data4; // yes, big endian here +}; +constexpr bool declare_binary_safe(const GUIDms &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + +// RFC binary format +struct UUIDbin { + uint32be Data1; + uint16be Data2; + uint16be Data3; + uint64be Data4; +}; +constexpr bool declare_binary_safe(const UUIDbin &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + + + +struct UUID { +private: + uint32 Data1; + uint16 Data2; + uint16 Data3; + uint64 Data4; + +public: + MPT_CONSTEXPRINLINE uint32 GetData1() const noexcept { + return Data1; + } + MPT_CONSTEXPRINLINE uint16 GetData2() const noexcept { + return Data2; + } + MPT_CONSTEXPRINLINE uint16 GetData3() const noexcept { + return Data3; + } + MPT_CONSTEXPRINLINE uint64 GetData4() const noexcept { + return Data4; + } + +public: + MPT_CONSTEXPRINLINE uint64 GetData64_1() const noexcept { + return (static_cast(Data1) << 32) | (static_cast(Data2) << 16) | (static_cast(Data3) << 0); + } + MPT_CONSTEXPRINLINE uint64 GetData64_2() const noexcept { + return Data4; + } + +public: + // xxxxxxxx-xxxx-Mmxx-Nnxx-xxxxxxxxxxxx + // <--32-->-<16>-<16>-<-------64------> + MPT_CONSTEXPRINLINE bool IsNil() const noexcept { + return (Data1 == 0) && (Data2 == 0) && (Data3 == 0) && (Data4 == 0); + } + MPT_CONSTEXPRINLINE bool IsValid() const noexcept { + return (Data1 != 0) || (Data2 != 0) || (Data3 != 0) || (Data4 != 0); + } + MPT_CONSTEXPRINLINE uint8 Variant() const noexcept { + return Nn() >> 4u; + } + MPT_CONSTEXPRINLINE uint8 Version() const noexcept { + return Mm() >> 4u; + } + MPT_CONSTEXPRINLINE bool IsRFC4122() const noexcept { + return (Variant() & 0xcu) == 0x8u; + } + +private: + MPT_CONSTEXPRINLINE uint8 Mm() const noexcept { + return static_cast((Data3 >> 8) & 0xffu); + } + MPT_CONSTEXPRINLINE uint8 Nn() const noexcept { + return static_cast((Data4 >> 56) & 0xffu); + } + void MakeRFC4122(uint8 version) noexcept { + // variant + uint8 Nn = static_cast((Data4 >> 56) & 0xffu); + Data4 &= 0x00ffffffffffffffull; + Nn &= ~(0xc0u); + Nn |= 0x80u; + Data4 |= static_cast(Nn) << 56; + // version + version &= 0x0fu; + uint8 Mm = static_cast((Data3 >> 8) & 0xffu); + Data3 &= 0x00ffu; + Mm &= ~(0xf0u); + Mm |= (version << 4u); + Data3 |= static_cast(Mm) << 8; + } +#if MPT_OS_WINDOWS +private: + static mpt::UUID UUIDFromWin32(::UUID uuid) { + return mpt::UUID(uuid.Data1, uuid.Data2, uuid.Data3, (static_cast(0) | (static_cast(uuid.Data4[0]) << 56) | (static_cast(uuid.Data4[1]) << 48) | (static_cast(uuid.Data4[2]) << 40) | (static_cast(uuid.Data4[3]) << 32) | (static_cast(uuid.Data4[4]) << 24) | (static_cast(uuid.Data4[5]) << 16) | (static_cast(uuid.Data4[6]) << 8) | (static_cast(uuid.Data4[7]) << 0))); + } + static ::UUID UUIDToWin32(mpt::UUID uuid) { + ::UUID result = ::UUID(); + result.Data1 = uuid.GetData1(); + result.Data2 = uuid.GetData2(); + result.Data3 = uuid.GetData3(); + result.Data4[0] = static_cast(uuid.GetData4() >> 56); + result.Data4[1] = static_cast(uuid.GetData4() >> 48); + result.Data4[2] = static_cast(uuid.GetData4() >> 40); + result.Data4[3] = static_cast(uuid.GetData4() >> 32); + result.Data4[4] = static_cast(uuid.GetData4() >> 24); + result.Data4[5] = static_cast(uuid.GetData4() >> 16); + result.Data4[6] = static_cast(uuid.GetData4() >> 8); + result.Data4[7] = static_cast(uuid.GetData4() >> 0); + return result; + } + +public: + explicit UUID(::UUID uuid) { + *this = UUIDFromWin32(uuid); + } + operator ::UUID() const { + return UUIDToWin32(*this); + } +#endif // MPT_OS_WINDOWS +private: + static MPT_CONSTEXPRINLINE uint8 NibbleFromChar(char x) { + return ('0' <= x && x <= '9') ? static_cast(x - '0' + 0) : ('a' <= x && x <= 'z') ? static_cast(x - 'a' + 10) + : ('A' <= x && x <= 'Z') ? static_cast(x - 'A' + 10) + : mpt::constexpr_throw(std::domain_error("")); + } + static MPT_CONSTEXPRINLINE uint8 ByteFromHex(char x, char y) { + return static_cast(uint8(0) | (NibbleFromChar(x) << 4) | (NibbleFromChar(y) << 0)); + } + static MPT_CONSTEXPRINLINE uint16 ParseHex16(const char * str) { + return static_cast(uint16(0) | (static_cast(ByteFromHex(str[0], str[1])) << 8) | (static_cast(ByteFromHex(str[2], str[3])) << 0)); + } + static MPT_CONSTEXPRINLINE uint32 ParseHex32(const char * str) { + return static_cast(uint32(0) | (static_cast(ByteFromHex(str[0], str[1])) << 24) | (static_cast(ByteFromHex(str[2], str[3])) << 16) | (static_cast(ByteFromHex(str[4], str[5])) << 8) | (static_cast(ByteFromHex(str[6], str[7])) << 0)); + } + +public: + static MPT_CONSTEXPRINLINE UUID ParseLiteral(const char * str, std::size_t len) { + return (len == 36 && str[8] == '-' && str[13] == '-' && str[18] == '-' && str[23] == '-') ? mpt::UUID( + ParseHex32(str + 0), + ParseHex16(str + 9), + ParseHex16(str + 14), + uint64(0) + | (static_cast(ParseHex16(str + 19)) << 48) + | (static_cast(ParseHex16(str + 24)) << 32) + | (static_cast(ParseHex32(str + 28)) << 0)) + : mpt::constexpr_throw(std::domain_error("")); + } + +public: + MPT_CONSTEXPRINLINE UUID() noexcept + : Data1(0) + , Data2(0) + , Data3(0) + , Data4(0) { + return; + } + MPT_CONSTEXPRINLINE explicit UUID(uint32 Data1, uint16 Data2, uint16 Data3, uint64 Data4) noexcept + : Data1(Data1) + , Data2(Data2) + , Data3(Data3) + , Data4(Data4) { + return; + } + explicit UUID(UUIDbin uuid) { + Data1 = uuid.Data1.get(); + Data2 = uuid.Data2.get(); + Data3 = uuid.Data3.get(); + Data4 = uuid.Data4.get(); + } + explicit UUID(GUIDms guid) { + Data1 = guid.Data1.get(); + Data2 = guid.Data2.get(); + Data3 = guid.Data3.get(); + Data4 = guid.Data4.get(); + } + operator UUIDbin() const { + UUIDbin result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + operator GUIDms() const { + GUIDms result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + +public: + // Create a UUID + template + static UUID Generate(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreate(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return mpt::UUID::RFC4122Random(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + return RFC4122Random(rng); +#endif + } + // Create a UUID that contains local, traceable information. + // Safe for local use. May be faster. + template + static UUID GenerateLocalUseOnly(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT +#if _WIN32_WINNT >= 0x0501 + // Available since Win2000, but we check for WinXP in order to not use this + // function in Win32old builds. It is not available on some non-fully + // patched Win98SE installs in the wild. + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreateSequential(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return Generate(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + // Fallback to ::UuidCreate is safe as ::UuidCreateSequential is only a + // tiny performance optimization. + return Generate(rng); +#endif +#else + return RFC4122Random(rng); +#endif + } + // Create a RFC4122 Random UUID. + template + static UUID RFC4122Random(Trng & prng) { + UUID result; + result.Data1 = mpt::random(prng); + result.Data2 = mpt::random(prng); + result.Data3 = mpt::random(prng); + result.Data4 = mpt::random(prng); + result.MakeRFC4122(4); + return result; + } + friend UUID UUIDRFC4122NamespaceV3(const UUID & ns, const mpt::ustring & name); + friend UUID UUIDRFC4122NamespaceV5(const UUID & ns, const mpt::ustring & name); + +public: + // General UUID<->string conversion. + // The string must/will be in standard UUID format: 4f9a455d-e7ef-4367-b2f0-0c83a38a5c72 + static UUID FromString(const mpt::ustring & str) { + std::vector segments = mpt::split(str, MPT_ULITERAL("-")); + if (segments.size() != 5) { + return UUID(); + } + if (segments[0].length() != 8) { + return UUID(); + } + if (segments[1].length() != 4) { + return UUID(); + } + if (segments[2].length() != 4) { + return UUID(); + } + if (segments[3].length() != 4) { + return UUID(); + } + if (segments[4].length() != 12) { + return UUID(); + } + UUID result; + result.Data1 = mpt::ConvertHexStringTo(segments[0]); + result.Data2 = mpt::ConvertHexStringTo(segments[1]); + result.Data3 = mpt::ConvertHexStringTo(segments[2]); + result.Data4 = mpt::ConvertHexStringTo(segments[3] + segments[4]); + return result; + } + mpt::ustring ToUString() const { + return mpt::ustring() + + mpt::format::hex0<8>(GetData1()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData2()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData3()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 48)) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 32)) + + mpt::format::hex0<8>(static_cast(GetData4() >> 0)); + } +}; + +MPT_CONSTEXPRINLINE bool operator==(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() == b.GetData1()) && (a.GetData2() == b.GetData2()) && (a.GetData3() == b.GetData3()) && (a.GetData4() == b.GetData4()); +} + +MPT_CONSTEXPRINLINE bool operator!=(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() != b.GetData1()) || (a.GetData2() != b.GetData2()) || (a.GetData3() != b.GetData3()) || (a.GetData4() != b.GetData4()); +} + + +namespace uuid_literals { + +MPT_CONSTEXPRINLINE mpt::UUID operator"" _uuid(const char * str, std::size_t len) { + return mpt::UUID::ParseLiteral(str, len); +} + +} // namespace uuid_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_UUID_HPP Property changes on: src/mpt/uuid/uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_NAMESPACE_HPP +#define MPT_BASE_TESTS_UUID_NAMESPACE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/uuid.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid_namespace { + +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +{ + constexpr mpt::UUID uuid_ns_dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"_uuid; + constexpr mpt::UUID expected = "74738ff5-5367-5958-9aee-98fffdcd1876"_uuid; + mpt::UUID gotten = mpt::UUIDRFC4122NamespaceV5(uuid_ns_dns, MPT_USTRING("www.example.org")); + MPT_TEST_EXPECT_EQUAL(gotten, expected); +} + +} // namespace uuid_namespace +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/uuid_namespace.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP +#define MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + +// Create a RFC4122 Version 3 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV3(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::MD5().process(mpt::as_span(buf)).result(); + mpt::UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(3); + return uuid; +} + +// Create a RFC4122 Version 5 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV5(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::SHA1().process(mpt::as_span(buf)).result(); + UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(5); + return uuid; +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/.clang-format =================================================================== --- src/mpt/.clang-format (nonexistent) +++ src/mpt/.clang-format (working copy) @@ -0,0 +1,130 @@ +Language: Cpp +Standard: c++17 + +AccessModifierOffset: -4 #? +AlignAfterOpenBracket: AlwaysBreak +AlignConsecutiveAssignments: false +AlignConsecutiveBitFields: false +AlignConsecutiveDeclarations: false +AlignConsecutiveMacros: true +AlignEscapedNewlines: DontAlign +AlignOperands: DontAlign +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Empty +AllowShortIfStatementsOnASingleLine: false +AllowShortLambdasOnASingleLine: Inline +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: MultiLine + AfterEnum: false + AfterFunction: false + AfterNamespace: false + #AfterObjCDeclaration + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: false + SplitEmptyNamespace: true +#BreakAfterJavaFieldAnnotations +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeComma +BreakStringLiterals: false +ColumnLimit: 0 +CommentPragmas: '' #? +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 #? +ContinuationIndentWidth: 4 #? +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +FixNamespaceComments: true +ForEachMacros: [] +IncludeBlocks: Preserve +IncludeCategories: [] #? +IncludeIsMainRegex: '' #? +IncludeIsMainSourceRegex: '' #? +IndentCaseLabels: true +IndentCaseBlocks: true +IndentExternBlock: NoIndent +IndentGotoLabels: false +IndentPPDirectives: None +InsertTrailingCommas: None +#BeforeHash +IndentWidth: 4 +IndentWrappedFunctionNames: true +#JavaImportGroups +#JavaScriptQuotes +#JavaScriptWrapImports +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '^MPT_TEST_GROUP_BEGIN$' #? +MacroBlockEnd: '^MPT_TEST_GROUP_END$' #? +MaxEmptyLinesToKeep: 5 +NamespaceIndentation: None +NamespaceMacros: [] #? +#ObjCBinPackProtocolList +#ObjCBlockIndentWidth +#ObjCBreakBeforeNestedBlockParam +#ObjCSpaceAfterProperty +#ObjCSpaceBeforeProtocolList +#PenaltyBreakAssignment +#PenaltyBreakBeforeFirstCallParameter +#PenaltyBreakComment +#PenaltyBreakFirstLessLess +#PenaltyBreakString +#PenaltyBreakTemplateDeclaration +#PenaltyExcessCharacter +#PenaltyReturnTypeOnItsOwnLine +PointerAlignment: Middle +#RawStringFormats +ReflowComments: false +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInParentheses: false +SpacesInSquareBrackets: false +StatementMacros: [ '_Pragma', '__pragma', 'MPT_WARNING', 'MPT_TEST_GROUP_INLINE_IDENTIFIER', 'MPT_TEST_GROUP_INLINE', 'MPT_TEST_GROUP_STATIC' ] #? +TabWidth: 4 +TypenameMacros: [] #? +UseCRLF: false +UseTab: ForContinuationAndIndentation +WhitespaceSensitiveMacros: + - MPT_PP_STRINGIFY Property changes on: src/mpt/.clang-format ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-clang-format \ No newline at end of property Index: src/mpt/base/algorithm.hpp =================================================================== --- src/mpt/base/algorithm.hpp (nonexistent) +++ src/mpt/base/algorithm.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALGORITHM_HPP +#define MPT_BASE_ALGORITHM_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Grows x with an exponential factor suitable for increasing buffer sizes. +// Clamps the result at limit. +// And avoids integer overflows while doing its business. +// The growth factor is 1.5, rounding down, execpt for the initial x==1 case. +template +inline T exponential_grow(const T & x, const Tlimit & limit) { + if (x <= 1) { + return 2; + } + T add = std::min(x >> 1, std::numeric_limits::max() - x); + return std::min(x + add, mpt::saturate_cast(limit)); +} + +template +inline T exponential_grow(const T & x) { + return mpt::exponential_grow(x, std::numeric_limits::max()); +} + + +// Check if val is in [lo,hi] without causing compiler warnings +// if theses checks are always true due to the domain of T. +// GCC does not warn if the type is templated. +template +constexpr bool is_in_range(const T & val, const C & lo, const C & hi) { + return lo <= val && val <= hi; +} + + +template +MPT_CONSTEXPR20_FUN bool contains(const Tcontainer & container, const Tval & value) noexcept(noexcept(std::find(std::begin(container), std::end(container), value))) { + return std::find(std::begin(container), std::end(container), value) != std::end(container); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/algorithm.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/alloc.hpp =================================================================== --- src/mpt/base/alloc.hpp (nonexistent) +++ src/mpt/base/alloc.hpp (working copy) @@ -0,0 +1,157 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALLOC_HPP +#define MPT_BASE_ALLOC_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/memory.hpp" +#include "mpt/base/span.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline mpt::span as_span(std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline mpt::span as_span(const std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline span as_span(std::basic_string & str) { + return span(str.data(), str.size()); +} + +template +inline span as_span(const std::basic_string & str) { + return span(str.data(), str.size()); +} + + + +template +inline std::vector::type> make_vector(T * beg, T * end) { + return std::vector::type>(beg, end); +} + +template +inline std::vector::type> make_vector(T * data, std::size_t size) { + return std::vector::type>(data, data + size); +} + +template +inline std::vector::type> make_vector(mpt::span data) { + return std::vector::type>(data.data(), data.data() + data.size()); +} + +template +inline std::vector::type> make_vector(T (&arr)[N]) { + return std::vector::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::vector::type> make_vector(const std::basic_string & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline std::basic_string::type> make_basic_string(T * beg, T * end) { + return std::basic_string::type>(beg, end); +} + +template +inline std::basic_string::type> make_basic_string(T * data, std::size_t size) { + return std::basic_string::type>(data, data + size); +} + +template +inline std::basic_string::type> make_basic_string(mpt::span data) { + return std::basic_string::type>(data.data(), data.data() + data.size()); +} + +template +inline std::basic_string::type> make_basic_string(T (&arr)[N]) { + return std::basic_string::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::basic_string::type> make_basic_string(const std::vector & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline Tcont1 & append(Tcont1 & cont1, const Tcont2 & cont2) { + cont1.insert(cont1.end(), cont2.begin(), cont2.end()); + return cont1; +} + +template +inline Tcont1 & append(Tcont1 & cont1, Tit2 beg, Tit2 end) { + cont1.insert(cont1.end(), beg, end); + return cont1; +} + + + +template +struct buffer_cast_impl { + inline Tdst operator()(const Tsrc & src) const { + return Tdst(mpt::byte_cast(src.data()), mpt::byte_cast(src.data()) + src.size()); + } +}; + +// casts between vector<->string of byte-castable types +template +inline Tdst buffer_cast(Tsrc src) { + return buffer_cast_impl()(src); +} + + + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } + inline mpt::byte_span operator()(std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALLOC_HPP Property changes on: src/mpt/base/alloc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/arithmetic_shift.hpp =================================================================== --- src/mpt/base/arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/arithmetic_shift.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// mpt::rshift_signed +// mpt::lshift_signed +// Shift a signed integer value in a well-defined manner. +// Does the same thing as MSVC would do. This is verified by the test suite. + +template +constexpr auto rshift_signed_standard(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x >> y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx >>= y; + urx -= roffset >> y; + return static_cast(urx); +} + +template +constexpr auto lshift_signed_standard(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x << y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx <<= y; + urx -= roffset << y; + return static_cast(urx); +} + +#if MPT_COMPILER_SHIFT_SIGNED + +template +constexpr auto rshift_signed_undefined(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x >> y; +} + +template +constexpr auto lshift_signed_undefined(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x << y; +} + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_undefined(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_undefined(x, y); +} + +#else + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_standard(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_standard(x, y); +} + +#endif + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + +template +constexpr auto sar(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto sal(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/array.hpp =================================================================== --- src/mpt/base/array.hpp (nonexistent) +++ src/mpt/base/array.hpp (working copy) @@ -0,0 +1,82 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARRAY_HPP +#define MPT_BASE_ARRAY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct stdarray_extent : std::integral_constant { }; + +template +struct stdarray_extent> : std::integral_constant { }; + +template +struct is_stdarray : std::false_type { }; + +template +struct is_stdarray> : std::true_type { }; + +// mpt::extent is the same as std::extent, +// but also works for std::array, +// and asserts that the given type is actually an array type instead of returning 0. +// use as: +// mpt::extent() +// mpt::extent() +// mpt::extent() +// mpt::extent() +template +constexpr std::size_t extent() noexcept { + using Tarray = typename std::remove_cv::type>::type; + static_assert(std::is_array::value || mpt::is_stdarray::value); + if constexpr (mpt::is_stdarray::value) { + return mpt::stdarray_extent(); + } else { + return std::extent(); + } +} + +template +struct array_size; + +template +struct array_size> { + static constexpr std::size_t size = N; +}; + +template +struct array_size { + static constexpr std::size_t size = N; +}; + + +template +constexpr std::array init_array(const Tx & x) { + std::array result{}; + for (std::size_t i = 0; i < N; ++i) { + result[i] = x; + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARRAY_HPP Property changes on: src/mpt/base/array.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/bit.hpp =================================================================== --- src/mpt/base/bit.hpp (nonexistent) +++ src/mpt/base/bit.hpp (working copy) @@ -0,0 +1,392 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_BIT_HPP +#define MPT_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#endif // C++20 +#include + +#include +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_CXX_AT_LEAST(20) +using std::bit_cast; +#else +// C++2a compatible bit_cast. +// Not implementing constexpr because this is not easily possible pre C++20. +template +MPT_FORCEINLINE typename std::enable_if<(sizeof(Tdst) == sizeof(Tsrc)) && std::is_trivially_copyable::value && std::is_trivially_copyable::value, Tdst>::type bit_cast(const Tsrc & src) noexcept { + Tdst dst{}; + std::memcpy(&dst, &src, sizeof(Tdst)); + return dst; +} +#endif + + + +#if MPT_CXX_AT_LEAST(20) + +using std::endian; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +constexpr mpt::endian get_endian() noexcept { + return mpt::endian::native; +} + +constexpr bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +constexpr bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +constexpr bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#else // !C++20 + +#if !MPT_COMPILER_GENERIC + +#if MPT_COMPILER_MSVC +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define MPT_PLATFORM_BIG_ENDIAN +#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +// fallback: +#if !defined(MPT_PLATFORM_BIG_ENDIAN) && !defined(MPT_PLATFORM_LITTLE_ENDIAN) +// taken from boost/detail/endian.hpp +#if (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) \ + || (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) \ + || (defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN)) +#define MPT_PLATFORM_BIG_ENDIAN +#elif (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) \ + || (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) \ + || (defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN)) +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif defined(__sparc) || defined(__sparc__) \ + || defined(_POWER) || defined(__powerpc__) \ + || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ + || defined(_MIPSEB) || defined(_POWER) \ + || defined(__s390__) +#define MPT_PLATFORM_BIG_ENDIAN +#elif defined(__i386__) || defined(__alpha__) \ + || defined(__ia64) || defined(__ia64__) \ + || defined(_M_IX86) || defined(_M_IA64) \ + || defined(_M_ALPHA) || defined(__amd64) \ + || defined(__amd64__) || defined(_M_AMD64) \ + || defined(__x86_64) || defined(__x86_64__) \ + || defined(_M_X64) || defined(__bfin__) +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +#endif // !MPT_COMPILER_GENERIC + +enum class endian +{ + little = 0x78563412u, + big = 0x12345678u, + weird = 1u, +#if MPT_COMPILER_GENERIC + native = 0u, +#elif defined(MPT_PLATFORM_LITTLE_ENDIAN) + native = little, +#elif defined(MPT_PLATFORM_BIG_ENDIAN) + native = big, +#else + native = 0u, +#endif +}; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +MPT_FORCEINLINE mpt::endian endian_probe() noexcept { + using endian_probe_type = uint32; + static_assert(sizeof(endian_probe_type) == 4); + constexpr endian_probe_type endian_probe_big = 0x12345678u; + constexpr endian_probe_type endian_probe_little = 0x78563412u; + const std::array probe{{std::byte{0x12}, std::byte{0x34}, std::byte{0x56}, std::byte{0x78}}}; + const endian_probe_type test = mpt::bit_cast(probe); + mpt::endian result = mpt::endian::native; + switch (test) { + case endian_probe_big: + result = mpt::endian::big; + break; + case endian_probe_little: + result = mpt::endian::little; + break; + default: + result = mpt::endian::weird; + break; + } + return result; +} + +MPT_FORCEINLINE mpt::endian get_endian() noexcept { +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 6285) // false-positive: ( || ) is always a non-zero constant. +#endif // MPT_COMPILER_MSVC + if constexpr ((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + return mpt::endian::native; + } else { + return mpt::endian_probe(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +} + +MPT_FORCEINLINE bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +MPT_FORCEINLINE bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +MPT_FORCEINLINE bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#endif // C++20 + + + +#if MPT_CXX_AT_LEAST(20) + +using std::bit_ceil; +using std::bit_floor; +using std::bit_width; +using std::countl_one; +using std::countl_zero; +using std::countr_one; +using std::countr_zero; +using std::has_single_bit; +using std::popcount; +using std::rotl; +using std::rotr; + +#else // !C++20 + +// C++20 header. +// Note that we do not use SFINAE here but instead rely on static_assert. + +template +constexpr int popcount(T val) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int result = 0; + while (val > 0) { + if (val & 0x1) { + result++; + } + val >>= 1; + } + return result; +} + +template +constexpr bool has_single_bit(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + return mpt::popcount(x) == 1; +} + +template +constexpr T bit_ceil(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 1; + while (result < x) { + T newresult = result << 1; + if (newresult < result) { + return 0; + } + result = newresult; + } + return result; +} + +template +constexpr T bit_floor(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + if (x == 0) { + return 0; + } + T result = 1; + do { + T newresult = result << 1; + if (newresult < result) { + return result; + } + result = newresult; + } while (result <= x); + return result >> 1; +} + +template +constexpr T bit_width(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 0; + while (x > 0) { + x >>= 1; + result += 1; + } + return result; +} + +template +constexpr int countl_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countl_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr T rotl_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x >> (N - r)) | (x << r); +} + +template +constexpr T rotr_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x << (N - r)) | (x >> r); +} + +template +constexpr T rotl(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotr_impl(x, -s) : ((x >> (N - r)) | (x << r)); +} + +template +constexpr T rotr(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotl_impl(x, -s) : ((x << (N - r)) | (x >> r)); +} + +#endif // C++20 + + + +template +constexpr int lower_bound_entropy_bits(T x_) { + typename std::make_unsigned::type x = static_cast::type>(x_); + return mpt::bit_width(x) == static_cast::type>(mpt::popcount(x)) ? mpt::bit_width(x) : mpt::bit_width(x) - 1; +} + + +template +constexpr bool is_mask(T x) { + static_assert(std::is_integral::value); + typedef typename std::make_unsigned::type unsigned_T; + unsigned_T ux = static_cast(x); + unsigned_T mask = 0; + for (std::size_t bits = 0; bits <= (sizeof(unsigned_T) * 8); ++bits) { + mask = (mask << 1) | 1u; + if (ux == mask) { + return true; + } + } + return false; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_BIT_HPP Property changes on: src/mpt/base/bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/check_platform.hpp =================================================================== --- src/mpt/base/check_platform.hpp (nonexistent) +++ src/mpt/base/check_platform.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CHECK_PLATFORM_HPP +#define MPT_BASE_CHECK_PLATFORM_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +static_assert(sizeof(std::uintptr_t) == sizeof(void *)); +static_assert(std::numeric_limits::digits == 8); + +static_assert(sizeof(char) == 1); + +static_assert(sizeof(std::byte) == 1); +static_assert(alignof(std::byte) == 1); + +static_assert(mpt::arch_bits == static_cast(mpt::pointer_size) * 8); + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CHECK_PLATFORM_HPP Property changes on: src/mpt/base/check_platform.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/compiletime_warning.hpp =================================================================== --- src/mpt/base/compiletime_warning.hpp (nonexistent) +++ src/mpt/base/compiletime_warning.hpp (working copy) @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_COMPILETIME_WARNING_HPP +#define MPT_BASE_COMPILETIME_WARNING_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/preprocessor.hpp" + + + +#if MPT_COMPILER_MSVC + +#define MPT_WARNING(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) +#define MPT_WARNING_STATEMENT(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) + +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) +#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) + +#else + +// portable #pragma message or #warning replacement +#define MPT_WARNING(text) \ + static inline int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME)() noexcept { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + } \ +/**/ +#define MPT_WARNING_STATEMENT(text) \ + int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) = []() { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + }() /**/ + +#endif + + + +#endif // MPT_BASE_COMPILETIME_WARNING_HPP Property changes on: src/mpt/base/compiletime_warning.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/constexpr_throw.hpp =================================================================== --- src/mpt/base/constexpr_throw.hpp (nonexistent) +++ src/mpt/base/constexpr_throw.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CONSTEXPR_THROW_HPP +#define MPT_BASE_CONSTEXPR_THROW_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Work-around for the requirement of at least 1 non-throwing function argument combination in C++ (17,2a). + +template +constexpr bool constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + // cppcheck-suppress identicalConditionAfterEarlyExit + return really; +} + +template +constexpr bool constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + +template +constexpr T constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + return T{}; +} + +template +constexpr T constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CONSTEXPR_THROW_HPP Property changes on: src/mpt/base/constexpr_throw.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect.hpp =================================================================== --- src/mpt/base/detect.hpp (nonexistent) +++ src/mpt/base/detect.hpp (working copy) @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_HPP +#define MPT_BASE_DETECT_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" +#include "mpt/base/detect_libcxx.hpp" +#include "mpt/base/detect_libc.hpp" + + + +#endif // MPT_BASE_DETECT_HPP Property changes on: src/mpt/base/detect.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_compiler.hpp =================================================================== --- src/mpt/base/detect_compiler.hpp (nonexistent) +++ src/mpt/base/detect_compiler.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_COMPILER_HPP +#define MPT_BASE_DETECT_COMPILER_HPP + + + +#define MPT_COMPILER_MAKE_VERSION2(version, sp) ((version)*100 + (sp)) +#define MPT_COMPILER_MAKE_VERSION3(major, minor, patch) ((major)*10000 + (minor)*100 + (patch)) + + + +#if defined(MPT_COMPILER_GENERIC) + +#undef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 1 + +#elif defined(__clang__) && defined(_MSC_VER) && defined(__c2__) + +#error "Clang/C2 is not supported. Please use Clang/LLVM for Windows instead." + +#elif defined(__clang__) + +#define MPT_COMPILER_CLANG 1 +#define MPT_COMPILER_CLANG_VERSION MPT_COMPILER_MAKE_VERSION3(__clang_major__, __clang_minor__, __clang_patchlevel__) +#define MPT_CLANG_AT_LEAST(major, minor, patch) (MPT_COMPILER_CLANG_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_CLANG_BEFORE(major, minor, patch) (MPT_COMPILER_CLANG_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_CLANG_BEFORE(7, 0, 0) +#error "clang version 7 required" +#endif + +#if defined(__clang_analyzer__) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#elif defined(__GNUC__) + +#define MPT_COMPILER_GCC 1 +#define MPT_COMPILER_GCC_VERSION MPT_COMPILER_MAKE_VERSION3(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#define MPT_GCC_AT_LEAST(major, minor, patch) (MPT_COMPILER_GCC_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_GCC_BEFORE(major, minor, patch) (MPT_COMPILER_GCC_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_GCC_BEFORE(8, 1, 0) +#error "GCC version 8.1 required" +#endif + +#elif defined(_MSC_VER) + +#define MPT_COMPILER_MSVC 1 +#if (_MSC_VER >= 1926) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 6) +#elif (_MSC_VER >= 1925) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 5) +#elif (_MSC_VER >= 1924) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 4) +#elif (_MSC_VER >= 1923) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 3) +#elif (_MSC_VER >= 1922) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 2) +#elif (_MSC_VER >= 1921) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 1) +#elif (_MSC_VER >= 1920) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 0) +#elif (_MSC_VER >= 1916) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 9) +#elif (_MSC_VER >= 1915) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 8) +#elif (_MSC_VER >= 1914) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 7) +#elif (_MSC_VER >= 1913) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 6) +#elif (_MSC_VER >= 1912) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 5) +#elif (_MSC_VER >= 1911) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 3) +#elif (_MSC_VER >= 1910) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 0) +#elif (_MSC_VER >= 1900) && defined(_MSVC_LANG) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 3) +#elif (_MSC_VER >= 1900) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 0) +#elif (_MSC_VER >= 1800) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2013, 0) +#elif (_MSC_VER >= 1700) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2012, 0) +#elif (_MSC_VER >= 1600) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2010, 0) +#elif (_MSC_VER >= 1500) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2008, 0) +#else +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2005, 0) +#endif +#define MPT_MSVC_AT_LEAST(version, sp) (MPT_COMPILER_MSVC_VERSION >= MPT_COMPILER_MAKE_VERSION2((version), (sp))) +#define MPT_MSVC_BEFORE(version, sp) (MPT_COMPILER_MSVC_VERSION < MPT_COMPILER_MAKE_VERSION2((version), (sp))) + +#if MPT_MSVC_BEFORE(2017, 9) +#error "MSVC version 2017 15.9 required" +#endif + +#if defined(_PREFAST_) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#else + +#define MPT_COMPILER_GENERIC 1 + +#endif + + + +#ifndef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 0 +#endif +#ifndef MPT_COMPILER_CLANG +#define MPT_COMPILER_CLANG 0 +#define MPT_CLANG_AT_LEAST(major, minor, patch) 0 +#define MPT_CLANG_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_GCC +#define MPT_COMPILER_GCC 0 +#define MPT_GCC_AT_LEAST(major, minor, patch) 0 +#define MPT_GCC_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_MSVC +#define MPT_COMPILER_MSVC 0 +#define MPT_MSVC_AT_LEAST(version, sp) 0 +#define MPT_MSVC_BEFORE(version, sp) 0 +#endif + + + +#if MPT_COMPILER_GENERIC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#if (__cplusplus >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#elif MPT_COMPILER_MSVC + +#if (_MSVC_LANG >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#else + +#define MPT_CXX 17 + +#endif + +// MPT_CXX is stricter than just using __cplusplus directly. +// We will only claim a language version as supported IFF all core language and +// library fatures that we need are actually supported AND working correctly +// (to our needs). + +#define MPT_CXX_AT_LEAST(version) (MPT_CXX >= (version)) +#define MPT_CXX_BEFORE(version) (MPT_CXX < (version)) + + + +#endif // MPT_BASE_DETECT_COMPILER_HPP Property changes on: src/mpt/base/detect_compiler.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libc.hpp =================================================================== --- src/mpt/base/detect_libc.hpp (nonexistent) +++ src/mpt/base/detect_libc.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBC_HPP +#define MPT_BASE_DETECT_LIBC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#include + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBC_GENERIC 1 +#elif MPT_COMPILER_GCC && (defined(__MINGW32__) || defined(__MINGW64__)) +#define MPT_LIBC_MS 1 +#elif defined(__GNU_LIBRARY__) +#define MPT_LIBC_GLIBC 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBC_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBC_MS 1 +#else +#define MPT_LIBC_GENERIC 1 +#endif + +#ifndef MPT_LIBC_GENERIC +#define MPT_LIBC_GENERIC 0 +#endif +#ifndef MPT_LIBC_GLIBC +#define MPT_LIBC_GLIBC 0 +#endif +#ifndef MPT_LIBC_MS +#define MPT_LIBC_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBC_HPP Property changes on: src/mpt/base/detect_libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libcxx.hpp =================================================================== --- src/mpt/base/detect_libcxx.hpp (nonexistent) +++ src/mpt/base/detect_libcxx.hpp (working copy) @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBCXX_HPP +#define MPT_BASE_DETECT_LIBCXX_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#endif // C++20 + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBCXX_GENERIC 1 +#elif defined(_LIBCPP_VERSION) +#define MPT_LIBCXX_LLVM 1 +#elif defined(__GLIBCXX__) || defined(__GLIBCPP__) +#define MPT_LIBCXX_GNU 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBCXX_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBCXX_MS 1 +#else +#define MPT_LIBCXX_GENERIC 1 +#endif + +#ifndef MPT_LIBCXX_GENERIC +#define MPT_LIBCXX_GENERIC 0 +#endif +#ifndef MPT_LIBCXX_LLVM +#define MPT_LIBCXX_LLVM 0 +#endif +#ifndef MPT_LIBCXX_GNU +#define MPT_LIBCXX_GNU 0 +#endif +#ifndef MPT_LIBCXX_MS +#define MPT_LIBCXX_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBCXX_HPP Property changes on: src/mpt/base/detect_libcxx.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_os.hpp =================================================================== --- src/mpt/base/detect_os.hpp (nonexistent) +++ src/mpt/base/detect_os.hpp (working copy) @@ -0,0 +1,109 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_OS_HPP +#define MPT_BASE_DETECT_OS_HPP + + + +// The order of the checks matters! +#if defined(__DJGPP__) +#define MPT_OS_DJGPP 1 +#elif defined(__EMSCRIPTEN__) +#define MPT_OS_EMSCRIPTEN 1 +#if defined(__EMSCRIPTEN_major__) && defined(__EMSCRIPTEN_minor__) +#if (__EMSCRIPTEN_major__ > 1) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ > 39) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ == 39) && (__EMSCRIPTEN_tiny__ >= 7) +// ok +#else +#error "Emscripten >= 1.39.7 is required." +#endif +#endif +#elif defined(_WIN32) +#define MPT_OS_WINDOWS 1 +#if defined(WINAPI_FAMILY) +#include +#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) +#define MPT_OS_WINDOWS_WINRT 0 +#else +#define MPT_OS_WINDOWS_WINRT 1 +#endif +#else // !WINAPI_FAMILY +#define MPT_OS_WINDOWS_WINRT 0 +#endif // WINAPI_FAMILY +#elif defined(__APPLE__) +#define MPT_OS_MACOSX_OR_IOS 1 +//#include "TargetConditionals.h" +//#if TARGET_IPHONE_SIMULATOR +//#elif TARGET_OS_IPHONE +//#elif TARGET_OS_MAC +//#else +//#endif +#elif defined(__HAIKU__) +#define MPT_OS_HAIKU 1 +#elif defined(__ANDROID__) || defined(ANDROID) +#define MPT_OS_ANDROID 1 +#elif defined(__linux__) +#define MPT_OS_LINUX 1 +#elif defined(__DragonFly__) +#define MPT_OS_DRAGONFLYBSD 1 +#elif defined(__FreeBSD__) +#define MPT_OS_FREEBSD 1 +#elif defined(__OpenBSD__) +#define MPT_OS_OPENBSD 1 +#elif defined(__NetBSD__) +#define MPT_OS_NETBSD 1 +#elif defined(__unix__) +#define MPT_OS_GENERIC_UNIX 1 +#else +#define MPT_OS_UNKNOWN 1 +#endif + +#ifndef MPT_OS_DJGPP +#define MPT_OS_DJGPP 0 +#endif +#ifndef MPT_OS_EMSCRIPTEN +#define MPT_OS_EMSCRIPTEN 0 +#endif +#ifndef MPT_OS_WINDOWS +#define MPT_OS_WINDOWS 0 +#endif +#ifndef MPT_OS_WINDOWS_WINRT +#define MPT_OS_WINDOWS_WINRT 0 +#endif +#ifndef MPT_OS_MACOSX_OR_IOS +#define MPT_OS_MACOSX_OR_IOS 0 +#endif +#ifndef MPT_OS_HAIKU +#define MPT_OS_HAIKU 0 +#endif +#ifndef MPT_OS_ANDROID +#define MPT_OS_ANDROID 0 +#endif +#ifndef MPT_OS_LINUX +#define MPT_OS_LINUX 0 +#endif +#ifndef MPT_OS_DRAGONFLYBSD +#define MPT_OS_DRAGONFLYBSD 0 +#endif +#ifndef MPT_OS_FREEBSD +#define MPT_OS_FREEBSD 0 +#endif +#ifndef MPT_OS_OPENBSD +#define MPT_OS_OPENBSD 0 +#endif +#ifndef MPT_OS_NETBSD +#define MPT_OS_NETBSD 0 +#endif +#ifndef MPT_OS_GENERIC_UNIX +#define MPT_OS_GENERIC_UNIX 0 +#endif +#ifndef MPT_OS_UNKNOWN +#define MPT_OS_UNKNOWN 0 +#endif + + + +#endif // MPT_BASE_DETECT_OS.hpp Property changes on: src/mpt/base/detect_os.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_quirks.hpp =================================================================== --- src/mpt/base/detect_quirks.hpp (nonexistent) +++ src/mpt/base/detect_quirks.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_QUIRKS_HPP +#define MPT_BASE_DETECT_QUIRKS_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" + + + +#if MPT_COMPILER_MSVC +// Compiler has multiplication/division semantics when shifting signed integers. +#define MPT_COMPILER_SHIFT_SIGNED 1 +#endif + +#ifndef MPT_COMPILER_SHIFT_SIGNED +#define MPT_COMPILER_SHIFT_SIGNED 0 +#endif + + + +// This should really be based on __STDCPP_THREADS__, but that is not defined by +// GCC or clang. Stupid. +// Just assume multithreaded and disable for platforms we know are +// singlethreaded later on. +#define MPT_PLATFORM_MULTITHREADED 1 + +#if MPT_OS_DJGPP +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + +#if (MPT_OS_EMSCRIPTEN && !defined(__EMSCRIPTEN_PTHREADS__)) +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE +#endif + + + +#if MPT_OS_DJGPP +#define MPT_COMPILER_QUIRK_NO_WCHAR +#endif + + + +#if defined(__arm__) + +#if defined(__SOFTFP__) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#if defined(__VFP_FP__) +// native-endian IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#elif defined(__MAVERICK__) +// little-endian IEEE754, we assume native-endian though +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#else +// not IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 1 +#endif + +#elif defined(__mips__) + +#if defined(__mips_soft_float) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif + +#endif + +#if MPT_OS_EMSCRIPTEN +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 1 +#endif + +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER32 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER32 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER64 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_EMULATED +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#endif + + + +#endif // MPT_BASE_DETECT_QUIRKS_HPP Property changes on: src/mpt/base/detect_quirks.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/floatingpoint.hpp =================================================================== --- src/mpt/base/floatingpoint.hpp (nonexistent) +++ src/mpt/base/floatingpoint.hpp (working copy) @@ -0,0 +1,93 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_FLOATINGPOINT_HPP +#define MPT_BASE_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// fp half +// n/a + +// fp single +using single = float; +namespace float_literals { +constexpr single operator"" _fs(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp double +namespace float_literals { +constexpr double operator"" _fd(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp extended +namespace float_literals { +constexpr long double operator"" _fe(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp quad +// n/a + +using float32 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float32 operator"" _f32(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +using float64 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float64 operator"" _f64(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +template +struct float_traits { + static constexpr bool is_float = !std::numeric_limits::is_integer; + static constexpr bool is_hard = is_float && !MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_soft = is_float && MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_float32 = is_float && (sizeof(T) == 4); + static constexpr bool is_float64 = is_float && (sizeof(T) == 8); + static constexpr bool is_native_endian = is_float && !MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN; + static constexpr bool is_ieee754_binary = is_float && std::numeric_limits::is_iec559 && !MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754; + static constexpr bool is_ieee754_binary32 = is_float && is_ieee754_binary && is_float32; + static constexpr bool is_ieee754_binary64 = is_float && is_ieee754_binary && is_float64; + static constexpr bool is_ieee754_binary32ne = is_float && is_ieee754_binary && is_float32 && is_native_endian; + static constexpr bool is_ieee754_binary64ne = is_float && is_ieee754_binary && is_float64 && is_native_endian; + static constexpr bool is_preferred = is_float && ((is_float32 && MPT_COMPILER_QUIRK_FLOAT_PREFER32) || (is_float64 && MPT_COMPILER_QUIRK_FLOAT_PREFER64)); +}; + +// prefer smaller floats, but try to use IEEE754 floats +using nativefloat = + std::conditional::is_preferred, float32, std::conditional::is_preferred, float64, std::conditional::is_iec559, float, std::conditional::is_iec559, double, std::conditional::is_iec559, long double, float>::type>::type>::type>::type>::type; +namespace float_literals { +constexpr nativefloat operator"" _nf(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_FLOATINGPOINT_HPP Property changes on: src/mpt/base/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/integer.hpp =================================================================== --- src/mpt/base/integer.hpp (nonexistent) +++ src/mpt/base/integer.hpp (working copy) @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_INTEGER_HPP +#define MPT_BASE_INTEGER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using int8 = std::int8_t; +using int16 = std::int16_t; +using int32 = std::int32_t; +using int64 = std::int64_t; +using uint8 = std::uint8_t; +using uint16 = std::uint16_t; +using uint32 = std::uint32_t; +using uint64 = std::uint64_t; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_INTEGER_HPP Property changes on: src/mpt/base/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/macros.hpp =================================================================== --- src/mpt/base/macros.hpp (nonexistent) +++ src/mpt/base/macros.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MACROS_HPP +#define MPT_BASE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +// Advanced inline attributes +#if MPT_COMPILER_MSVC +#define MPT_FORCEINLINE __forceinline +#define MPT_NOINLINE __declspec(noinline) +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_FORCEINLINE __attribute__((always_inline)) inline +#define MPT_NOINLINE __attribute__((noinline)) +#else +#define MPT_FORCEINLINE inline +#define MPT_NOINLINE +#endif + + + +// constexpr +#define MPT_CONSTEXPRINLINE constexpr MPT_FORCEINLINE +#if MPT_CXX_AT_LEAST(20) +#define MPT_CONSTEXPR20_FUN constexpr MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR constexpr +#else // !C++20 +#define MPT_CONSTEXPR20_FUN MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR const +#endif // C++20 + + + +#define MPT_FORCE_CONSTEXPR(expr) [&]() { \ + constexpr auto x = (expr); \ + return x; \ +}() + + + +#if MPT_CXX_AT_LEAST(20) +#define MPT_IS_CONSTANT_EVALUATED20() std::is_constant_evaluated() +#define MPT_IS_CONSTANT_EVALUATED() std::is_constant_evaluated() +#else // !C++20 +#define MPT_IS_CONSTANT_EVALUATED20() false +// this pessimizes the case for C++17 by always assuming constexpr context, which implies always running constexpr-friendly code +#define MPT_IS_CONSTANT_EVALUATED() true +#endif // C++20 + + + +#if MPT_COMPILER_MSVC +#define MPT_MAYBE_CONSTANT_IF(x) \ + __pragma(warning(push)) \ + __pragma(warning(disable : 4127)) \ + if (x) \ + __pragma(warning(pop)) \ +/**/ +#endif + +#if MPT_COMPILER_GCC +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ + if (x) \ + _Pragma("GCC diagnostic pop") \ +/**/ +#endif + +#if MPT_COMPILER_CLANG +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \ + _Pragma("clang diagnostic ignored \"-Wtype-limits\"") \ + _Pragma("clang diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \ + if (x) \ + _Pragma("clang diagnostic pop") \ +/**/ +#endif + +#if !defined(MPT_MAYBE_CONSTANT_IF) +// MPT_MAYBE_CONSTANT_IF disables compiler warnings for conditions that may in some case be either always false or always true (this may turn out to be useful in ASSERTions in some cases). +#define MPT_MAYBE_CONSTANT_IF(x) if (x) +#endif + + + +#if MPT_OS_WINDOWS +#define MPT_UNUSED(x) UNREFERENCED_PARAMETER(x) +#else +#define MPT_UNUSED(x) static_cast(x) +#endif + + + +#define MPT_DISCARD(expr) static_cast(expr) + + + +// Use MPT_RESTRICT to indicate that a pointer is guaranteed to not be aliased. +#if MPT_COMPILER_MSVC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_RESTRICT __restrict +#else +#define MPT_RESTRICT +#endif + + + +#endif // MPT_BASE_MACROS_HPP Property changes on: src/mpt/base/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/math.hpp =================================================================== --- src/mpt/base/math.hpp (nonexistent) +++ src/mpt/base/math.hpp (working copy) @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_EMPTY_HPP +#define MPT_BASE_EMPTY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_OS_DJGPP + +inline double round(const long double val) { + return ::roundl(val); +} + +inline double round(const double val) { + return ::round(val); +} + +inline float round(const float val) { + return ::roundf(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::round +using std::round; + +#endif // MPT_OS_DJGPP + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_EMPTY_HPP Property changes on: src/mpt/base/math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/memory.hpp =================================================================== --- src/mpt/base/memory.hpp (nonexistent) +++ src/mpt/base/memory.hpp (working copy) @@ -0,0 +1,262 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/span.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +using byte_span = mpt::span; +using const_byte_span = mpt::span; + + + +// Tell which types are safe for mpt::byte_cast. +// signed char is actually not allowed to alias into an object representation, +// which means that, if the actual type is not itself signed char but char or +// unsigned char instead, dereferencing the signed char pointer is undefined +// behaviour. +template +struct is_byte_castable : public std::false_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; + + +template +struct is_byte : public std::false_type { }; +template <> +struct is_byte : public std::true_type { }; +template <> +struct is_byte : public std::true_type { }; + + +template +constexpr bool declare_binary_safe(const T &) noexcept { + return false; +} + +constexpr bool declare_binary_safe(const char &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const uint8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const int8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const std::byte &) noexcept { + return true; +} + +// Tell which types are safe to binary write into files. +// By default, no types are safe. +// When a safe type gets defined, +// also specialize this template so that IO functions will work. +template +struct is_binary_safe : public std::conditional::type { }; + +// Generic Specialization for arrays. +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; + + +template +constexpr bool check_binary_size(std::size_t size) noexcept { + return true + && (sizeof(T) == size) + && (alignof(T) == 1) + && std::is_standard_layout::value + && std::has_unique_object_representations::value + && mpt::is_binary_safe::value; +} + + +template +struct byte_cast_impl { + inline Tdst operator()(Tsrc src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + // not checking is_byte_castable here because we are actually + // doing a static_cast and converting the value + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return static_cast(src); + } +}; + +template +struct byte_cast_impl, mpt::span> { + inline mpt::span operator()(mpt::span src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return mpt::as_span(mpt::byte_cast_impl()(src.data()), mpt::byte_cast_impl()(src.data() + src.size())); + } +}; + +template +struct byte_cast_impl { + inline Tdst * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl; + +template +struct void_cast_impl { + inline Tdst * operator()(void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline Tdst * operator()(const void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline const void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +// casts between different byte (char) types or pointers to these types +template +inline Tdst byte_cast(Tsrc src) noexcept { + return byte_cast_impl()(src); +} + +// casts between pointers to void and pointers to byte +template +inline Tdst void_cast(Tsrc src) noexcept { + return void_cast_impl()(src); +} + + + +template +MPT_CONSTEXPRINLINE std::byte as_byte(T src) noexcept { + static_assert(std::is_integral::value); + return static_cast(static_cast(src)); +} + + + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } + inline mpt::byte_span operator()(T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } + inline mpt::byte_span operator()(T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +// In order to be able to partially specialize it, +// as_raw_memory is implemented via a class template. +// Do not overload or specialize as_raw_memory directly. +// Using a wrapper (by default just around a cast to const std::byte *), +// allows for implementing raw memory access +// via on-demand generating a cached serialized representation. +template +inline mpt::const_byte_span as_raw_memory(const T & v) { + return mpt::as_raw_memory_impl()(v); +} +template +inline mpt::byte_span as_raw_memory(T & v) { + return mpt::as_raw_memory_impl()(v); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_MEMORY_HPP Property changes on: src/mpt/base/memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/namespace.hpp =================================================================== --- src/mpt/base/namespace.hpp (nonexistent) +++ src/mpt/base/namespace.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NAMESPACE_HPP +#define MPT_BASE_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/version.hpp" +#include "mpt/base/compiletime_warning.hpp" + + + +#if !defined(MPT_INLINE_NS) + +#define MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) v##a##_##b##_##c##_##d +#define MPT_BUILD_VERSION_NAMESPACE(a, b, c, d) MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) + +#define MPT_VERSION_NAMESPACE MPT_BUILD_VERSION_NAMESPACE(MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH, MPT_VERSION_BUILD) + +#if MPT_OS_WINDOWS +#ifdef UNICODE +#define MPT_VERSION_ABI_OS u +#else +#define MPT_VERSION_ABI_OS 8 +#endif +#else +#define MPT_VERSION_ABI_OS _ +#endif + +#if MPT_LIBC_GENERIC +#define MPT_VERSION_ABI_LIBC _ +#elif MPT_LIBC_MS +#ifdef _DLL +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MDd +#else +#define MPT_VERSION_ABI_LIBC MDr +#endif +#else +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MTd +#else +#define MPT_VERSION_ABI_LIBC MTr +#endif +#endif +#elif MPT_LIBC_GLIBC +#define MPT_VERSION_ABI_LIBC G +#else +#define MPT_VERSION_ABI_LIBC _ +#endif + +#define MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) ABI_##a##_##b +#define MPT_BUILD_ABI_NAMESPACE(a, b) MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) + +#define MPT_ABI_NAMESPACE MPT_BUILD_ABI_NAMESPACE(MPT_VERSION_ABI_OS, MPT_VERSION_ABI_LIBC) + +#if !defined(MPT_PROJECT_NAMESPACE) +MPT_WARNING("Please #define MPT_PROJECT_NAMESPACE or #define MPT_INLINE_NS in build configuration.") +#define MPT_PROJECT_NAMESPACE x +#endif // !MPT_PROJECT_NAMESPACE + +#define MPT_BUILD_INLINE_NS_IMPL(a, b, c) a##_##b##_##c +#define MPT_BUILD_INLINE_NS(a, b, c) MPT_BUILD_INLINE_NS_IMPL(a, b, c) + +#define MPT_INLINE_NS MPT_BUILD_INLINE_NS(MPT_VERSION_NAMESPACE, MPT_ABI_NAMESPACE, MPT_PROJECT_NAMESPACE) + +#endif // !MPT_INLINE_NS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_NAMESPACE_HPP Property changes on: src/mpt/base/namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/numeric.hpp =================================================================== --- src/mpt/base/numeric.hpp (nonexistent) +++ src/mpt/base/numeric.hpp (working copy) @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NUMERIC_HPP +#define MPT_BASE_NUMERIC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/bit.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + return static_cast(x % m); + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; + +// Returns x % m if m != 0, x otherwise. +// i.e. "return (m == 0) ? x : (x % m);", but without causing a warning with stupid older compilers +template +constexpr Tval modulo_if_not_zero(Tval x) { + return ModIfNotZeroImpl().mod(x); +} + +// rounds x up to multiples of target +template +constexpr T align_up(T x, T target) { + return ((x + (target - 1)) / target) * target; +} + +// rounds x down to multiples of target +template +constexpr T align_down(T x, T target) { + return (x / target) * target; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/numeric.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/pointer.hpp =================================================================== --- src/mpt/base/pointer.hpp (nonexistent) +++ src/mpt/base/pointer.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_POINTER_HPP +#define MPT_BASE_POINTER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr int arch_bits = sizeof(void *) * 8; +inline constexpr std::size_t pointer_size = sizeof(void *); + + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tsrc & src) noexcept { + return src; + } +}; + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; + + +template +constexpr Tdst pointer_cast(const Tsrc & src) noexcept { + return pointer_cast_helper::cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_POINTER_HPP Property changes on: src/mpt/base/pointer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/preprocessor.hpp =================================================================== --- src/mpt/base/preprocessor.hpp (nonexistent) +++ src/mpt/base/preprocessor.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_PREPROCESSOR_HPP +#define MPT_BASE_PREPROCESSOR_HPP + + + +#define MPT_PP_DEFER(m, ...) m(__VA_ARGS__) + +#define MPT_PP_STRINGIFY(x) #x + +#define MPT_PP_JOIN_HELPER(a, b) a##b +#define MPT_PP_JOIN(a, b) MPT_PP_JOIN_HELPER(a, b) + +#define MPT_PP_UNIQUE_IDENTIFIER(prefix) MPT_PP_JOIN(prefix, __LINE__) + + + +#endif // MPT_BASE_PREPROCESSOR_HPP Property changes on: src/mpt/base/preprocessor.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_cast.hpp =================================================================== --- src/mpt/base/saturate_cast.hpp (nonexistent) +++ src/mpt/base/saturate_cast.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_CAST_HPP +#define MPT_BASE_SATURATE_CAST_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Saturate the value of src to the domain of Tdst +template +constexpr Tdst saturate_cast(Tsrc src) noexcept { + // This code tries not only to obviously avoid overflows but also to avoid signed/unsigned comparison warnings and type truncation warnings (which in fact would be safe here) by explicit casting. + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_integer); + if constexpr (std::numeric_limits::is_signed && std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::max(static_cast(std::numeric_limits::min()), std::min(src, static_cast(std::numeric_limits::max())))); + } + } else if constexpr (!std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else if constexpr (std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) > sizeof(Tsrc)) { + return static_cast(src); + } else if constexpr (sizeof(Tdst) == sizeof(Tsrc)) { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else { // Tdst unsigned, Tsrc signed + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(std::max(static_cast(0), src)); + } else { + return static_cast(std::max(static_cast(0), std::min(src, static_cast(std::numeric_limits::max())))); + } + } +} + +template +constexpr Tdst saturate_cast(double src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + +template +constexpr Tdst saturate_cast(float src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_CAST_HPP Property changes on: src/mpt/base/saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_round.hpp =================================================================== --- src/mpt/base/saturate_round.hpp (nonexistent) +++ src/mpt/base/saturate_round.hpp (working copy) @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_ROUND_HPP +#define MPT_BASE_SATURATE_ROUND_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/math.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Rounds given double value to nearest integer value of type T. +// Out-of-range values are saturated to the specified integer type's limits. + +template +inline T saturate_round(float val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(long double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_ROUND_HPP Property changes on: src/mpt/base/saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/secure.hpp =================================================================== --- src/mpt/base/secure.hpp (nonexistent) +++ src/mpt/base/secure.hpp (working copy) @@ -0,0 +1,198 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SECURE_HPP +#define MPT_BASE_SECURE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace secure { + + + +inline MPT_NOINLINE void memzero(std::byte * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(void * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(char * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(uint8 * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + + + +template +inline MPT_NOINLINE void clear(T & val) { + std::atomic_signal_fence(std::memory_order_seq_cst); + volatile T * volatile v = &val; + std::atomic_thread_fence(std::memory_order_seq_cst); + *v = T{}; + std::atomic_signal_fence(std::memory_order_seq_cst); +} + + + +class byte { +private: + std::byte value; + +public: + byte() noexcept + : value(std::byte{0}) { + return; + } + explicit byte(std::byte value) noexcept + : value(value) { + return; + } + byte(const byte & other) noexcept + : value(other.value) { + return; + } + byte(byte && other) noexcept + : value(std::move(other.value)) { + mpt::secure::clear(other.value); + } + byte & operator=(const byte & other) noexcept { + if (&other == this) { + return *this; + } + value = other.value; + return *this; + } + byte & operator==(byte && other) noexcept { + if (&other == this) { + return *this; + } + value = std::move(other.value); + mpt::secure::clear(other.value); + return *this; + } + explicit operator std::byte() const noexcept { + return value; + } + ~byte() { + mpt::secure::clear(value); + } +}; + + + +class buffer { +private: + std::vector m_data; + +public: + buffer() + : m_data(0) { + return; + } + explicit buffer(const std::vector & data) + : m_data(data) { + return; + } + explicit buffer(const std::byte * beg, const std::byte * end) + : m_data(beg, end) { + return; + } + buffer(const buffer & other) + : m_data(other.m_data) { + return; + } + buffer(buffer && other) noexcept + : m_data(std::move(other.m_data)) { + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + } + buffer & operator=(const buffer & other) { + if (&other == this) { + return *this; + } + m_data = other.m_data; + return *this; + } + buffer & operator=(buffer && other) noexcept { + if (&other == this) { + return *this; + } + m_data = std::move(other.m_data); + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + return *this; + } + ~buffer() { + mpt::secure::memzero(m_data.data(), m_data.size()); + m_data.resize(0); + m_data.shrink_to_fit(); + } + explicit operator std::vector() const { + return m_data; + } + const std::byte * data() const { + return m_data.data(); + } + std::byte * data() { + return m_data.data(); + } + std::size_t size() const { + return m_data.size(); + } +}; + + + +} // namespace secure + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SECURE_HPP Property changes on: src/mpt/base/secure.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/semantic_version.hpp =================================================================== --- src/mpt/base/semantic_version.hpp (nonexistent) +++ src/mpt/base/semantic_version.hpp (working copy) @@ -0,0 +1,94 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SEMANTIC_VERSION_HPP +#define MPT_BASE_SEMANTIC_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/version.hpp" + + + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct semantic_version { + unsigned long long major = 0; + unsigned long long minor = 0; + unsigned long long patch = 0; + constexpr std::tuple as_tuple() const noexcept { + return std::make_tuple(major, minor, patch); + } +}; + +constexpr bool operator==(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +struct version_info { + semantic_version semver{}; + unsigned long long build = 0; + constexpr std::tuple, unsigned long long> as_tuple() const noexcept { + return std::make_tuple(semver.as_tuple(), build); + } + template + friend Tostream & operator<<(Tostream & os, version_info const vi) { + if (vi.build > 0) { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch << "+build." << vi.build; + } else { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch; + } + return os; + } +}; + +constexpr bool operator==(version_info const a, version_info const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(version_info const a, version_info const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(version_info const a, version_info const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(version_info const a, version_info const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(version_info const a, version_info const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(version_info const a, version_info const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +constexpr inline version_info Version = {{MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH}, MPT_VERSION_BUILD}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SEMANTIC_VERSION_HPP Property changes on: src/mpt/base/semantic_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/source_location.hpp =================================================================== --- src/mpt/base/source_location.hpp (nonexistent) +++ src/mpt/base/source_location.hpp (working copy) @@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SOURCE_LOCATION_HPP +#define MPT_BASE_SOURCE_LOCATION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#endif // C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::source_location; + +#define MPT_SOURCE_LOCATION_CURRENT() std::source_location::current() + +#else // !C++20 + +#if MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#elif MPT_COMPILER_GCC + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#elif MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#else + +#define MPT_SOURCE_LOCATION_FILE __FILE__ +#define MPT_SOURCE_LOCATION_FUNCTION "" +#define MPT_SOURCE_LOCATION_LINE __LINE__ +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#endif + +// compatible with C++20 std::source_location +struct source_location { +private: + const char * m_file_name; + const char * m_function_name; + uint32 m_line; + uint32 m_column; + +public: + constexpr source_location() noexcept + : m_file_name("") + , m_function_name("") + , m_line(0) + , m_column(0) { + } + constexpr source_location(const char * file, const char * function, uint32 line, uint32 column) noexcept + : m_file_name(file) + , m_function_name(function) + , m_line(line) + , m_column(column) { + } + source_location(const source_location &) = default; + source_location(source_location &&) = default; + static constexpr source_location current(const char * file = MPT_SOURCE_LOCATION_FILE, const char * function = MPT_SOURCE_LOCATION_FUNCTION, uint32 line = MPT_SOURCE_LOCATION_LINE, uint32 column = MPT_SOURCE_LOCATION_COLUMN) noexcept { + return source_location(file, function, line, column); + } + constexpr uint32 line() const noexcept { + return m_line; + } + constexpr uint32 column() const noexcept { + return m_column; + } + constexpr const char * file_name() const noexcept { + return m_file_name; + } + constexpr const char * function_name() const noexcept { + return m_function_name; + } +}; + + +#if (MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6)) || MPT_COMPILER_GCC || (MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0)) +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current() +#else +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current(__FILE__, __func__, __LINE__, 0) +#endif + +#endif // C++20 + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SOURCE_LOCATION_HPP Property changes on: src/mpt/base/source_location.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/span.hpp =================================================================== --- src/mpt/base/span.hpp (nonexistent) +++ src/mpt/base/span.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SPAN_HPP +#define MPT_BASE_SPAN_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#include +#endif // C++20 + +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::dynamic_extent; +using std::span; + +#else // !C++20 + +// Simplified version of gsl::span. +// Non-owning read-only or read-write view into a contiguous block of T +// objects, i.e. equivalent to a (beg,end) or (data,size) tuple. +// Can eventually be replaced without further modifications with a full C++20 +// std::span. + +inline constexpr std::size_t dynamic_extent = std::numeric_limits::max(); + +template +class span { + +public: + using element_type = T; + using value_type = typename std::remove_cv::type; + using index_type = std::size_t; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + + using iterator = pointer; + using const_iterator = const_pointer; + + using difference_type = typename std::iterator_traits::difference_type; + +private: + T * m_beg; + T * m_end; + +public: + span() noexcept + : m_beg(nullptr) + , m_end(nullptr) { + } + + span(pointer beg, pointer end) + : m_beg(beg) + , m_end(end) { + } + + span(pointer data, index_type size) + : m_beg(data) + , m_end(data + size) { + } + + template + span(element_type (&arr)[N]) + : m_beg(arr) + , m_end(arr + N) { + } + + template + span(std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + template + span(const std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + span(const span & other) noexcept = default; + + template + span(const span & other) + : m_beg(other.begin()) + , m_end(other.end()) { + } + + span & operator=(const span & other) noexcept = default; + + iterator begin() const { + return iterator(m_beg); + } + + iterator end() const { + return iterator(m_end); + } + + const_iterator cbegin() const { + return const_iterator(begin()); + } + + const_iterator cend() const { + return const_iterator(end()); + } + + reference operator[](index_type index) { + return m_beg[index]; + } + + const_reference operator[](index_type index) const { + return m_beg[index]; + } + + bool operator==(span const & other) const noexcept { + return size() == other.size() && (m_beg == other.m_beg || std::equal(begin(), end(), other.begin())); + } + + bool operator!=(span const & other) const noexcept { + return !(*this == other); + } + + pointer data() const noexcept { + return m_beg; + } + + bool empty() const noexcept { + return size() == 0; + } + + index_type size() const noexcept { + return static_cast(std::distance(m_beg, m_end)); + } + + index_type length() const noexcept { + return size(); + } + + span subspan(std::size_t offset, std::size_t count = mpt::dynamic_extent) const { + return span(data() + offset, (count == mpt::dynamic_extent) ? (size() - offset) : count); + } + + span first(std::size_t count) const { + return span(data(), count); + } + + span last(std::size_t count) const { + return span(data() + (size() - count), count); + } + +}; // class span + +#endif // C++20 + +template +inline span as_span(T * beg, T * end) { + return span(beg, end); +} + +template +inline span as_span(T * data, std::size_t size) { + return span(data, size); +} + +template +inline span as_span(T (&arr)[N]) { + return span(std::begin(arr), std::end(arr)); +} + +template +inline span as_span(std::array & cont) { + return span(cont); +} + +template +inline span as_span(const std::array & cont) { + return span(cont); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SPAN_HPP Property changes on: src/mpt/base/span.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_arithmetic_shift.hpp =================================================================== --- src/mpt/base/tests/tests_base_arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_arithmetic_shift.hpp (working copy) @@ -0,0 +1,321 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/arithmetic_shift.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace arithmetic_shift { + +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +{ + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), mpt::rshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), mpt::rshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), mpt::rshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), mpt::rshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), mpt::rshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), mpt::rshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), mpt::rshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), mpt::rshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), mpt::rshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), mpt::rshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), mpt::rshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), mpt::rshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), mpt::rshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), mpt::rshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), mpt::rshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), mpt::rshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), mpt::rshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), mpt::rshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), mpt::rshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), mpt::rshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), mpt::rshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), mpt::rshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), mpt::rshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), mpt::rshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), mpt::rshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), mpt::rshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), mpt::rshift_signed_standard(32767, 15)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), mpt::lshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), mpt::lshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), mpt::lshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), mpt::lshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), mpt::lshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), mpt::lshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), mpt::lshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), mpt::lshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), mpt::lshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), mpt::lshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), mpt::lshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), mpt::lshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), mpt::lshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), mpt::lshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), mpt::lshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), mpt::lshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), mpt::lshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), mpt::lshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), mpt::lshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), mpt::lshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), mpt::lshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), mpt::lshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), mpt::lshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), mpt::lshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), mpt::lshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), mpt::lshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), mpt::lshift_signed_standard(32767, 15)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), (-32768) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), (-32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), (-32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), (-2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), (-1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), (0) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), (1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), (2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), (32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), (32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), (-32768) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), (-32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), (-32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), (-2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), (-1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), (0) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), (1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), (2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), (32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), (32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), (-32768) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), (-32767) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), (-32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), (-2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), (-1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), (0) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), (1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), (2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), (32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), (32767) >> 15); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), (-32768) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), (-32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), (-32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), (-2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), (-1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), (0) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), (1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), (2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), (32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), (32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), (-32768) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), (-32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), (-32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), (-2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), (-1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), (0) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), (1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), (2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), (32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), (32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), (-32768) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), (-32767) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), (-32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), (-2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), (-1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), (0) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), (1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), (2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), (32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), (32767) << 15); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_standard(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_standard(0x7fffffff, 31)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_undefined(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_undefined(0x7fffffff, 31)); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(0x7fffffffffffffffll, 63)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 63)); + +#endif +} + +} // namespace arithmetic_shift +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/tests/tests_base_arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_bit.hpp =================================================================== --- src/mpt/base/tests/tests_base_bit.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_bit.hpp (working copy) @@ -0,0 +1,220 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BASE_BIT_HPP +#define MPT_BASE_TESTS_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace bit { + +MPT_TEST_GROUP_INLINE("mpt/base/bit") +{ +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian_probe()); +#endif + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_little()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::little); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::little); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::little); +#endif + } + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_big()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::big); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::big); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::big); +#endif + } + + MPT_TEST_EXPECT_EQUAL(mpt::popcount(static_cast(int32(-1))), 32); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(0u), 0); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(1u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(2u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(3u), 2); + + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(0u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(1u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(2u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(3u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(4u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(5u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(6u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(7u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(8u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(9u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x7fffffffu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000000u)), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000001u)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xfffffffeu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xffffffffu)), false); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(0u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(3u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(5u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(6u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(7u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(9u), 16u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x7fffffffu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000000u)), 0x80000000u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000001u)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xfffffffeu)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xffffffffu)), 0u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(5u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(6u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(7u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(9u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x7fffffffu)), 0x40000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000000u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000001u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xfffffffeu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xffffffffu)), 0x80000000u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(4u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(5u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(6u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(7u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(8u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(9u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x7fffffffu)), 31u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000000u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000001u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xfffffffeu)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xffffffffu)), 32u); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111110)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111100)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11100000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11000000)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b10000000)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000001)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000011)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00011111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00111111)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b01111111)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000001)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000011)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00011111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00111111)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b01111111)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111110)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111100)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11100000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11000000)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b10000000)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xffffffffu), 32); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xfffffffeu), 31); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x80000000u), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7fffffffu), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7ffffffeu), 30); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000007u), 3); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000006u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000005u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000004u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000003u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000002u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000001u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000000u), 0); +} + +} // namespace bit +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BASE_BIT_HPP Property changes on: src/mpt/base/tests/tests_base_bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_math.hpp =================================================================== --- src/mpt/base/tests/tests_base_math.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_math.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_MATH_HPP +#define MPT_BASE_TESTS_MATH_HPP + + + +#include "mpt/base/math.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace math { + +MPT_TEST_GROUP_INLINE("mpt/base/math") +{ + MPT_TEST_EXPECT_EQUAL(mpt::round(1.99), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.5), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.1), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.1), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.5), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.9), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.4), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.7), -2.0); +} + +} // namespace math +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_MATH_HPP Property changes on: src/mpt/base/tests/tests_base_math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_cast.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_cast.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_cast.hpp (working copy) @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_CAST_HPP +#define MPT_BASE_TESTS_SATURATE_CAST_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_cast { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +{ + // trivials + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(-1), -1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(0), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(1), 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + + // signed / unsigned + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int32)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int64)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint64)std::numeric_limits::max()); + + // overflow + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), (uint16)std::numeric_limits::max() + 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), (uint32)std::numeric_limits::max() + 1); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -128); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 32767); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000u); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(static_cast(std::numeric_limits::max())), std::numeric_limits::max()); +} + +} // namespace saturate_cast +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_CAST_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_round.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_round.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_round.hpp (working copy) @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_ROUND_HPP +#define MPT_BASE_TESTS_SATURATE_ROUND_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_round.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_round { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +{ + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() - 0.4), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() + 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() - 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.499), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(110.1), 110); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-110.1), -110); + + // These should fail to compile + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + + // This should trigger assert in Round. + //MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-129), 0); +} + +} // namespace saturate_round +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_ROUND_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_wrapping_divide.hpp =================================================================== --- src/mpt/base/tests/tests_base_wrapping_divide.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_wrapping_divide.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP +#define MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/wrapping_divide.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace wrapping_divide { + +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +{ + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-25, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-23, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-8, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-6, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-5, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-4, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-3, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-2, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-1, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(1, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(2, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(3, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(4, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(5, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(6, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(23, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(25, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(uint32(0x7fffffff), uint32(0x80000000)), uint32(0x7fffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0x7ffffffe), int32(0x7fffffff)), int32(0x7ffffffe)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(2)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(2)), int32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(2)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7fffffff)), int32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffe)), int32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffe)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffd)), int32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffd)), int32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffd)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7fffffff)), int32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7ffffffe)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7ffffffe)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(2)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(2)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(2)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000001), uint32(0xffffffff)), uint32(0xbffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000000), uint32(0xffffffff)), uint32(0xbfffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x3fffffff), uint32(0xffffffff)), uint32(0xc0000000)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000001)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000001)), uint32(2)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000001)), uint32(3)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7fffffff)), uint32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffe)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffd)), uint32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffd)), uint32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffd)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7fffffff)), uint32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7ffffffe)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-15, 7), -3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-14, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-13, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-12, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-11, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-10, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-9, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-8, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-7, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-6, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-5, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-4, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-3, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-2, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-1, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(1, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(2, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(3, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(4, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(5, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(6, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(7, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(9, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(10, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(11, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(12, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(13, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(14, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(15, 7), 2); +} + +} // namespace wrapping_divide +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/tests/tests_base_wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/utility.hpp =================================================================== --- src/mpt/base/utility.hpp (nonexistent) +++ src/mpt/base/utility.hpp (working copy) @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_UTILITY_HPP +#define MPT_BASE_UTILITY_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_BEFORE(20) +#include "mpt/base/saturate_cast.hpp" +#endif + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::in_range; + +#else + +// Returns true iff Tdst can represent the value val. +// Use as if(mpt::in_range(-1)). +template +constexpr bool in_range(Tsrc val) { + return (static_cast(mpt::saturate_cast(val)) == val); +} + +#endif + + +#if MPT_CXX_AT_LEAST(23) + +using std::to_underlying; + +#else + +template +constexpr std::underlying_type_t to_underlying(T value) noexcept { + return static_cast::type>(value); +} + +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_UTILITY_HPP Property changes on: src/mpt/base/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/version.hpp =================================================================== --- src/mpt/base/version.hpp (nonexistent) +++ src/mpt/base/version.hpp (working copy) @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_VERSION_HPP +#define MPT_BASE_VERSION_HPP + + + +#define MPT_VERSION_MAJOR 0 +#define MPT_VERSION_MINOR 0 +#define MPT_VERSION_PATCH 0 +#define MPT_VERSION_BUILD 0 + + + +#endif // MPT_BASE_VERSION_HPP Property changes on: src/mpt/base/version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/wrapping_divide.hpp =================================================================== --- src/mpt/base/wrapping_divide.hpp (nonexistent) +++ src/mpt/base/wrapping_divide.hpp (working copy) @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_WRAPPING_DIVIDE_HPP +#define MPT_BASE_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Modulo with more intuitive behaviour for some contexts: +// Instead of being symmetrical around 0, the pattern for positive numbers is repeated in the negative range. +// For example, wrapping_modulo(-1, m) == (m - 1). +// Behaviour is undefined if m<=0. +template +constexpr auto wrapping_modulo(T x, M m) -> decltype(x % m) { + return (x >= 0) ? (x % m) : (m - 1 - ((-1 - x) % m)); +} + +template +constexpr auto wrapping_divide(T x, D d) -> decltype(x / d) { + return (x >= 0) ? (x / d) : (((x + 1) / d) - 1); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/algorithm.hpp =================================================================== --- src/mpt/base/algorithm.hpp (nonexistent) +++ src/mpt/base/algorithm.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALGORITHM_HPP +#define MPT_BASE_ALGORITHM_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Grows x with an exponential factor suitable for increasing buffer sizes. +// Clamps the result at limit. +// And avoids integer overflows while doing its business. +// The growth factor is 1.5, rounding down, execpt for the initial x==1 case. +template +inline T exponential_grow(const T & x, const Tlimit & limit) { + if (x <= 1) { + return 2; + } + T add = std::min(x >> 1, std::numeric_limits::max() - x); + return std::min(x + add, mpt::saturate_cast(limit)); +} + +template +inline T exponential_grow(const T & x) { + return mpt::exponential_grow(x, std::numeric_limits::max()); +} + + +// Check if val is in [lo,hi] without causing compiler warnings +// if theses checks are always true due to the domain of T. +// GCC does not warn if the type is templated. +template +constexpr bool is_in_range(const T & val, const C & lo, const C & hi) { + return lo <= val && val <= hi; +} + + +template +MPT_CONSTEXPR20_FUN bool contains(const Tcontainer & container, const Tval & value) noexcept(noexcept(std::find(std::begin(container), std::end(container), value))) { + return std::find(std::begin(container), std::end(container), value) != std::end(container); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/algorithm.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/alloc.hpp =================================================================== --- src/mpt/base/alloc.hpp (nonexistent) +++ src/mpt/base/alloc.hpp (working copy) @@ -0,0 +1,157 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ALLOC_HPP +#define MPT_BASE_ALLOC_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/memory.hpp" +#include "mpt/base/span.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline mpt::span as_span(std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline mpt::span as_span(const std::vector & cont) { + return mpt::span(cont.data(), cont.data() + cont.size()); +} + +template +inline span as_span(std::basic_string & str) { + return span(str.data(), str.size()); +} + +template +inline span as_span(const std::basic_string & str) { + return span(str.data(), str.size()); +} + + + +template +inline std::vector::type> make_vector(T * beg, T * end) { + return std::vector::type>(beg, end); +} + +template +inline std::vector::type> make_vector(T * data, std::size_t size) { + return std::vector::type>(data, data + size); +} + +template +inline std::vector::type> make_vector(mpt::span data) { + return std::vector::type>(data.data(), data.data() + data.size()); +} + +template +inline std::vector::type> make_vector(T (&arr)[N]) { + return std::vector::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::vector::type> make_vector(const std::basic_string & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline std::basic_string::type> make_basic_string(T * beg, T * end) { + return std::basic_string::type>(beg, end); +} + +template +inline std::basic_string::type> make_basic_string(T * data, std::size_t size) { + return std::basic_string::type>(data, data + size); +} + +template +inline std::basic_string::type> make_basic_string(mpt::span data) { + return std::basic_string::type>(data.data(), data.data() + data.size()); +} + +template +inline std::basic_string::type> make_basic_string(T (&arr)[N]) { + return std::basic_string::type>(std::begin(arr), std::end(arr)); +} + +template +inline std::basic_string::type> make_basic_string(const std::vector & str) { + return std::vector::type>(str.begin(), str.end()); +} + + + +template +inline Tcont1 & append(Tcont1 & cont1, const Tcont2 & cont2) { + cont1.insert(cont1.end(), cont2.begin(), cont2.end()); + return cont1; +} + +template +inline Tcont1 & append(Tcont1 & cont1, Tit2 beg, Tit2 end) { + cont1.insert(cont1.end(), beg, end); + return cont1; +} + + + +template +struct buffer_cast_impl { + inline Tdst operator()(const Tsrc & src) const { + return Tdst(mpt::byte_cast(src.data()), mpt::byte_cast(src.data()) + src.size()); + } +}; + +// casts between vector<->string of byte-castable types +template +inline Tdst buffer_cast(Tsrc src) { + return buffer_cast_impl()(src); +} + + + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } + inline mpt::byte_span operator()(std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl> { + inline mpt::const_byte_span operator()(const std::vector & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v.data()), v.size() * sizeof(T)); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALLOC_HPP Property changes on: src/mpt/base/alloc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/arithmetic_shift.hpp =================================================================== --- src/mpt/base/arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/arithmetic_shift.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/saturate_cast.hpp" + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// mpt::rshift_signed +// mpt::lshift_signed +// Shift a signed integer value in a well-defined manner. +// Does the same thing as MSVC would do. This is verified by the test suite. + +template +constexpr auto rshift_signed_standard(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x >> y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx >>= y; + urx -= roffset >> y; + return static_cast(urx); +} + +template +constexpr auto lshift_signed_standard(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + using result_type = decltype(x << y); + using unsigned_result_type = typename std::make_unsigned::type; + const unsigned_result_type roffset = static_cast(1) << ((sizeof(result_type) * 8) - 1); + result_type rx = x; + unsigned_result_type urx = static_cast(rx); + urx += roffset; + urx <<= y; + urx -= roffset << y; + return static_cast(urx); +} + +#if MPT_COMPILER_SHIFT_SIGNED + +template +constexpr auto rshift_signed_undefined(T x, int y) noexcept -> decltype(x >> y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x >> y; +} + +template +constexpr auto lshift_signed_undefined(T x, int y) noexcept -> decltype(x << y) { + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_signed); + return x << y; +} + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_undefined(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_undefined(x, y); +} + +#else + +template +constexpr auto rshift_signed(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed_standard(x, y); +} + +template +constexpr auto lshift_signed(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed_standard(x, y); +} + +#endif + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto arithmetic_shift_right(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + +template +constexpr auto sar(T x, int y) noexcept -> decltype(x >> y) { + return mpt::rshift_signed(x, y); +} + +template +constexpr auto sal(T x, int y) noexcept -> decltype(x << y) { + return mpt::lshift_signed(x, y); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/array.hpp =================================================================== --- src/mpt/base/array.hpp (nonexistent) +++ src/mpt/base/array.hpp (working copy) @@ -0,0 +1,82 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_ARRAY_HPP +#define MPT_BASE_ARRAY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct stdarray_extent : std::integral_constant { }; + +template +struct stdarray_extent> : std::integral_constant { }; + +template +struct is_stdarray : std::false_type { }; + +template +struct is_stdarray> : std::true_type { }; + +// mpt::extent is the same as std::extent, +// but also works for std::array, +// and asserts that the given type is actually an array type instead of returning 0. +// use as: +// mpt::extent() +// mpt::extent() +// mpt::extent() +// mpt::extent() +template +constexpr std::size_t extent() noexcept { + using Tarray = typename std::remove_cv::type>::type; + static_assert(std::is_array::value || mpt::is_stdarray::value); + if constexpr (mpt::is_stdarray::value) { + return mpt::stdarray_extent(); + } else { + return std::extent(); + } +} + +template +struct array_size; + +template +struct array_size> { + static constexpr std::size_t size = N; +}; + +template +struct array_size { + static constexpr std::size_t size = N; +}; + + +template +constexpr std::array init_array(const Tx & x) { + std::array result{}; + for (std::size_t i = 0; i < N; ++i) { + result[i] = x; + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ARRAY_HPP Property changes on: src/mpt/base/array.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/bit.hpp =================================================================== --- src/mpt/base/bit.hpp (nonexistent) +++ src/mpt/base/bit.hpp (working copy) @@ -0,0 +1,392 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_BIT_HPP +#define MPT_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#endif // C++20 +#include + +#include +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_CXX_AT_LEAST(20) +using std::bit_cast; +#else +// C++2a compatible bit_cast. +// Not implementing constexpr because this is not easily possible pre C++20. +template +MPT_FORCEINLINE typename std::enable_if<(sizeof(Tdst) == sizeof(Tsrc)) && std::is_trivially_copyable::value && std::is_trivially_copyable::value, Tdst>::type bit_cast(const Tsrc & src) noexcept { + Tdst dst{}; + std::memcpy(&dst, &src, sizeof(Tdst)); + return dst; +} +#endif + + + +#if MPT_CXX_AT_LEAST(20) + +using std::endian; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +constexpr mpt::endian get_endian() noexcept { + return mpt::endian::native; +} + +constexpr bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +constexpr bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +constexpr bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#else // !C++20 + +#if !MPT_COMPILER_GENERIC + +#if MPT_COMPILER_MSVC +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define MPT_PLATFORM_BIG_ENDIAN +#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +// fallback: +#if !defined(MPT_PLATFORM_BIG_ENDIAN) && !defined(MPT_PLATFORM_LITTLE_ENDIAN) +// taken from boost/detail/endian.hpp +#if (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) \ + || (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) \ + || (defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN)) +#define MPT_PLATFORM_BIG_ENDIAN +#elif (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) \ + || (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) \ + || (defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN)) +#define MPT_PLATFORM_LITTLE_ENDIAN +#elif defined(__sparc) || defined(__sparc__) \ + || defined(_POWER) || defined(__powerpc__) \ + || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ + || defined(_MIPSEB) || defined(_POWER) \ + || defined(__s390__) +#define MPT_PLATFORM_BIG_ENDIAN +#elif defined(__i386__) || defined(__alpha__) \ + || defined(__ia64) || defined(__ia64__) \ + || defined(_M_IX86) || defined(_M_IA64) \ + || defined(_M_ALPHA) || defined(__amd64) \ + || defined(__amd64__) || defined(_M_AMD64) \ + || defined(__x86_64) || defined(__x86_64__) \ + || defined(_M_X64) || defined(__bfin__) +#define MPT_PLATFORM_LITTLE_ENDIAN +#endif +#endif + +#endif // !MPT_COMPILER_GENERIC + +enum class endian +{ + little = 0x78563412u, + big = 0x12345678u, + weird = 1u, +#if MPT_COMPILER_GENERIC + native = 0u, +#elif defined(MPT_PLATFORM_LITTLE_ENDIAN) + native = little, +#elif defined(MPT_PLATFORM_BIG_ENDIAN) + native = big, +#else + native = 0u, +#endif +}; + +static_assert(mpt::endian::big != mpt::endian::little, "platform with all scalar types having size 1 is not supported"); + +MPT_FORCEINLINE mpt::endian endian_probe() noexcept { + using endian_probe_type = uint32; + static_assert(sizeof(endian_probe_type) == 4); + constexpr endian_probe_type endian_probe_big = 0x12345678u; + constexpr endian_probe_type endian_probe_little = 0x78563412u; + const std::array probe{{std::byte{0x12}, std::byte{0x34}, std::byte{0x56}, std::byte{0x78}}}; + const endian_probe_type test = mpt::bit_cast(probe); + mpt::endian result = mpt::endian::native; + switch (test) { + case endian_probe_big: + result = mpt::endian::big; + break; + case endian_probe_little: + result = mpt::endian::little; + break; + default: + result = mpt::endian::weird; + break; + } + return result; +} + +MPT_FORCEINLINE mpt::endian get_endian() noexcept { +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 6285) // false-positive: ( || ) is always a non-zero constant. +#endif // MPT_COMPILER_MSVC + if constexpr ((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + return mpt::endian::native; + } else { + return mpt::endian_probe(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +} + +MPT_FORCEINLINE bool endian_is_little() noexcept { + return get_endian() == mpt::endian::little; +} + +MPT_FORCEINLINE bool endian_is_big() noexcept { + return get_endian() == mpt::endian::big; +} + +MPT_FORCEINLINE bool endian_is_weird() noexcept { + return !endian_is_little() && !endian_is_big(); +} + +#endif // C++20 + + + +#if MPT_CXX_AT_LEAST(20) + +using std::bit_ceil; +using std::bit_floor; +using std::bit_width; +using std::countl_one; +using std::countl_zero; +using std::countr_one; +using std::countr_zero; +using std::has_single_bit; +using std::popcount; +using std::rotl; +using std::rotr; + +#else // !C++20 + +// C++20 header. +// Note that we do not use SFINAE here but instead rely on static_assert. + +template +constexpr int popcount(T val) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int result = 0; + while (val > 0) { + if (val & 0x1) { + result++; + } + val >>= 1; + } + return result; +} + +template +constexpr bool has_single_bit(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + return mpt::popcount(x) == 1; +} + +template +constexpr T bit_ceil(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 1; + while (result < x) { + T newresult = result << 1; + if (newresult < result) { + return 0; + } + result = newresult; + } + return result; +} + +template +constexpr T bit_floor(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + if (x == 0) { + return 0; + } + T result = 1; + do { + T newresult = result << 1; + if (newresult < result) { + return result; + } + result = newresult; + } while (result <= x); + return result >> 1; +} + +template +constexpr T bit_width(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + T result = 0; + while (x > 0) { + x >>= 1; + result += 1; + } + return result; +} + +template +constexpr int countl_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countl_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = std::numeric_limits::digits - 1; bit >= 0; --bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_zero(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) == 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr int countr_one(T x) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + int count = 0; + for (int bit = 0; bit < std::numeric_limits::digits; ++bit) { + if ((x & (1u << bit)) != 0u) { + count++; + } else { + break; + } + } + return count; +} + +template +constexpr T rotl_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x >> (N - r)) | (x << r); +} + +template +constexpr T rotr_impl(T x, int r) noexcept { + auto N = std::numeric_limits::digits; + return (x << (N - r)) | (x >> r); +} + +template +constexpr T rotl(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotr_impl(x, -s) : ((x >> (N - r)) | (x << r)); +} + +template +constexpr T rotr(T x, int s) noexcept { + static_assert(std::numeric_limits::is_integer); + static_assert(std::is_unsigned::value); + auto N = std::numeric_limits::digits; + auto r = s % N; + return (s < 0) ? mpt::rotl_impl(x, -s) : ((x << (N - r)) | (x >> r)); +} + +#endif // C++20 + + + +template +constexpr int lower_bound_entropy_bits(T x_) { + typename std::make_unsigned::type x = static_cast::type>(x_); + return mpt::bit_width(x) == static_cast::type>(mpt::popcount(x)) ? mpt::bit_width(x) : mpt::bit_width(x) - 1; +} + + +template +constexpr bool is_mask(T x) { + static_assert(std::is_integral::value); + typedef typename std::make_unsigned::type unsigned_T; + unsigned_T ux = static_cast(x); + unsigned_T mask = 0; + for (std::size_t bits = 0; bits <= (sizeof(unsigned_T) * 8); ++bits) { + mask = (mask << 1) | 1u; + if (ux == mask) { + return true; + } + } + return false; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_BIT_HPP Property changes on: src/mpt/base/bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/check_platform.hpp =================================================================== --- src/mpt/base/check_platform.hpp (nonexistent) +++ src/mpt/base/check_platform.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CHECK_PLATFORM_HPP +#define MPT_BASE_CHECK_PLATFORM_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +static_assert(sizeof(std::uintptr_t) == sizeof(void *)); +static_assert(std::numeric_limits::digits == 8); + +static_assert(sizeof(char) == 1); + +static_assert(sizeof(std::byte) == 1); +static_assert(alignof(std::byte) == 1); + +static_assert(mpt::arch_bits == static_cast(mpt::pointer_size) * 8); + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CHECK_PLATFORM_HPP Property changes on: src/mpt/base/check_platform.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/compiletime_warning.hpp =================================================================== --- src/mpt/base/compiletime_warning.hpp (nonexistent) +++ src/mpt/base/compiletime_warning.hpp (working copy) @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_COMPILETIME_WARNING_HPP +#define MPT_BASE_COMPILETIME_WARNING_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/preprocessor.hpp" + + + +#if MPT_COMPILER_MSVC + +#define MPT_WARNING(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) +#define MPT_WARNING_STATEMENT(text) __pragma(message(__FILE__ "(" MPT_PP_DEFER(MPT_PP_STRINGIFY, __LINE__) "): Warning: " text)) + +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#define MPT_WARNING(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) +#define MPT_WARNING_STATEMENT(text) _Pragma(MPT_PP_STRINGIFY(GCC warning text)) + +#else + +// portable #pragma message or #warning replacement +#define MPT_WARNING(text) \ + static inline int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME)() noexcept { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + } \ +/**/ +#define MPT_WARNING_STATEMENT(text) \ + int MPT_PP_UNIQUE_IDENTIFIER(MPT_WARNING_NAME) = []() { \ + int warning [[deprecated("Warning: " text)]] = 0; \ + return warning; \ + }() /**/ + +#endif + + + +#endif // MPT_BASE_COMPILETIME_WARNING_HPP Property changes on: src/mpt/base/compiletime_warning.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/constexpr_throw.hpp =================================================================== --- src/mpt/base/constexpr_throw.hpp (nonexistent) +++ src/mpt/base/constexpr_throw.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_CONSTEXPR_THROW_HPP +#define MPT_BASE_CONSTEXPR_THROW_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Work-around for the requirement of at least 1 non-throwing function argument combination in C++ (17,2a). + +template +constexpr bool constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + // cppcheck-suppress identicalConditionAfterEarlyExit + return really; +} + +template +constexpr bool constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + +template +constexpr T constexpr_throw_helper(Exception && e, bool really = true) { + //return !really ? really : throw std::forward(e); + if (really) { + throw std::forward(e); + } + return T{}; +} + +template +constexpr T constexpr_throw(Exception && e) { + return mpt::constexpr_throw_helper(std::forward(e)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_CONSTEXPR_THROW_HPP Property changes on: src/mpt/base/constexpr_throw.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect.hpp =================================================================== --- src/mpt/base/detect.hpp (nonexistent) +++ src/mpt/base/detect.hpp (working copy) @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_HPP +#define MPT_BASE_DETECT_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" +#include "mpt/base/detect_libcxx.hpp" +#include "mpt/base/detect_libc.hpp" + + + +#endif // MPT_BASE_DETECT_HPP Property changes on: src/mpt/base/detect.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_compiler.hpp =================================================================== --- src/mpt/base/detect_compiler.hpp (nonexistent) +++ src/mpt/base/detect_compiler.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_COMPILER_HPP +#define MPT_BASE_DETECT_COMPILER_HPP + + + +#define MPT_COMPILER_MAKE_VERSION2(version, sp) ((version)*100 + (sp)) +#define MPT_COMPILER_MAKE_VERSION3(major, minor, patch) ((major)*10000 + (minor)*100 + (patch)) + + + +#if defined(MPT_COMPILER_GENERIC) + +#undef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 1 + +#elif defined(__clang__) && defined(_MSC_VER) && defined(__c2__) + +#error "Clang/C2 is not supported. Please use Clang/LLVM for Windows instead." + +#elif defined(__clang__) + +#define MPT_COMPILER_CLANG 1 +#define MPT_COMPILER_CLANG_VERSION MPT_COMPILER_MAKE_VERSION3(__clang_major__, __clang_minor__, __clang_patchlevel__) +#define MPT_CLANG_AT_LEAST(major, minor, patch) (MPT_COMPILER_CLANG_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_CLANG_BEFORE(major, minor, patch) (MPT_COMPILER_CLANG_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_CLANG_BEFORE(7, 0, 0) +#error "clang version 7 required" +#endif + +#if defined(__clang_analyzer__) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#elif defined(__GNUC__) + +#define MPT_COMPILER_GCC 1 +#define MPT_COMPILER_GCC_VERSION MPT_COMPILER_MAKE_VERSION3(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#define MPT_GCC_AT_LEAST(major, minor, patch) (MPT_COMPILER_GCC_VERSION >= MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) +#define MPT_GCC_BEFORE(major, minor, patch) (MPT_COMPILER_GCC_VERSION < MPT_COMPILER_MAKE_VERSION3((major), (minor), (patch))) + +#if MPT_GCC_BEFORE(8, 1, 0) +#error "GCC version 8.1 required" +#endif + +#elif defined(_MSC_VER) + +#define MPT_COMPILER_MSVC 1 +#if (_MSC_VER >= 1926) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 6) +#elif (_MSC_VER >= 1925) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 5) +#elif (_MSC_VER >= 1924) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 4) +#elif (_MSC_VER >= 1923) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 3) +#elif (_MSC_VER >= 1922) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 2) +#elif (_MSC_VER >= 1921) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 1) +#elif (_MSC_VER >= 1920) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2019, 0) +#elif (_MSC_VER >= 1916) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 9) +#elif (_MSC_VER >= 1915) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 8) +#elif (_MSC_VER >= 1914) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 7) +#elif (_MSC_VER >= 1913) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 6) +#elif (_MSC_VER >= 1912) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 5) +#elif (_MSC_VER >= 1911) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 3) +#elif (_MSC_VER >= 1910) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2017, 0) +#elif (_MSC_VER >= 1900) && defined(_MSVC_LANG) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 3) +#elif (_MSC_VER >= 1900) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2015, 0) +#elif (_MSC_VER >= 1800) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2013, 0) +#elif (_MSC_VER >= 1700) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2012, 0) +#elif (_MSC_VER >= 1600) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2010, 0) +#elif (_MSC_VER >= 1500) +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2008, 0) +#else +#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2005, 0) +#endif +#define MPT_MSVC_AT_LEAST(version, sp) (MPT_COMPILER_MSVC_VERSION >= MPT_COMPILER_MAKE_VERSION2((version), (sp))) +#define MPT_MSVC_BEFORE(version, sp) (MPT_COMPILER_MSVC_VERSION < MPT_COMPILER_MAKE_VERSION2((version), (sp))) + +#if MPT_MSVC_BEFORE(2017, 9) +#error "MSVC version 2017 15.9 required" +#endif + +#if defined(_PREFAST_) +#ifndef MPT_BUILD_ANALYZED +#define MPT_BUILD_ANALYZED +#endif +#endif + +#else + +#define MPT_COMPILER_GENERIC 1 + +#endif + + + +#ifndef MPT_COMPILER_GENERIC +#define MPT_COMPILER_GENERIC 0 +#endif +#ifndef MPT_COMPILER_CLANG +#define MPT_COMPILER_CLANG 0 +#define MPT_CLANG_AT_LEAST(major, minor, patch) 0 +#define MPT_CLANG_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_GCC +#define MPT_COMPILER_GCC 0 +#define MPT_GCC_AT_LEAST(major, minor, patch) 0 +#define MPT_GCC_BEFORE(major, minor, patch) 0 +#endif +#ifndef MPT_COMPILER_MSVC +#define MPT_COMPILER_MSVC 0 +#define MPT_MSVC_AT_LEAST(version, sp) 0 +#define MPT_MSVC_BEFORE(version, sp) 0 +#endif + + + +#if MPT_COMPILER_GENERIC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG + +#if (__cplusplus >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#elif MPT_COMPILER_MSVC + +#if (_MSVC_LANG >= 201703) +#define MPT_CXX 17 +#else +#define MPT_CXX 17 +#endif + +#else + +#define MPT_CXX 17 + +#endif + +// MPT_CXX is stricter than just using __cplusplus directly. +// We will only claim a language version as supported IFF all core language and +// library fatures that we need are actually supported AND working correctly +// (to our needs). + +#define MPT_CXX_AT_LEAST(version) (MPT_CXX >= (version)) +#define MPT_CXX_BEFORE(version) (MPT_CXX < (version)) + + + +#endif // MPT_BASE_DETECT_COMPILER_HPP Property changes on: src/mpt/base/detect_compiler.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libc.hpp =================================================================== --- src/mpt/base/detect_libc.hpp (nonexistent) +++ src/mpt/base/detect_libc.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBC_HPP +#define MPT_BASE_DETECT_LIBC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#include + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBC_GENERIC 1 +#elif MPT_COMPILER_GCC && (defined(__MINGW32__) || defined(__MINGW64__)) +#define MPT_LIBC_MS 1 +#elif defined(__GNU_LIBRARY__) +#define MPT_LIBC_GLIBC 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBC_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBC_MS 1 +#else +#define MPT_LIBC_GENERIC 1 +#endif + +#ifndef MPT_LIBC_GENERIC +#define MPT_LIBC_GENERIC 0 +#endif +#ifndef MPT_LIBC_GLIBC +#define MPT_LIBC_GLIBC 0 +#endif +#ifndef MPT_LIBC_MS +#define MPT_LIBC_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBC_HPP Property changes on: src/mpt/base/detect_libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_libcxx.hpp =================================================================== --- src/mpt/base/detect_libcxx.hpp (nonexistent) +++ src/mpt/base/detect_libcxx.hpp (working copy) @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_LIBCXX_HPP +#define MPT_BASE_DETECT_LIBCXX_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#endif // C++20 + + + +// order of checks is important! +#if MPT_COMPILER_GENERIC +#define MPT_LIBCXX_GENERIC 1 +#elif defined(_LIBCPP_VERSION) +#define MPT_LIBCXX_LLVM 1 +#elif defined(__GLIBCXX__) || defined(__GLIBCPP__) +#define MPT_LIBCXX_GNU 1 +#elif MPT_COMPILER_MSVC +#define MPT_LIBCXX_MS 1 +#elif MPT_COMPILER_CLANG && MPT_OS_WINDOWS +#define MPT_LIBCXX_MS 1 +#else +#define MPT_LIBCXX_GENERIC 1 +#endif + +#ifndef MPT_LIBCXX_GENERIC +#define MPT_LIBCXX_GENERIC 0 +#endif +#ifndef MPT_LIBCXX_LLVM +#define MPT_LIBCXX_LLVM 0 +#endif +#ifndef MPT_LIBCXX_GNU +#define MPT_LIBCXX_GNU 0 +#endif +#ifndef MPT_LIBCXX_MS +#define MPT_LIBCXX_MS 0 +#endif + + + +#endif // MPT_BASE_DETECT_LIBCXX_HPP Property changes on: src/mpt/base/detect_libcxx.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_os.hpp =================================================================== --- src/mpt/base/detect_os.hpp (nonexistent) +++ src/mpt/base/detect_os.hpp (working copy) @@ -0,0 +1,109 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_OS_HPP +#define MPT_BASE_DETECT_OS_HPP + + + +// The order of the checks matters! +#if defined(__DJGPP__) +#define MPT_OS_DJGPP 1 +#elif defined(__EMSCRIPTEN__) +#define MPT_OS_EMSCRIPTEN 1 +#if defined(__EMSCRIPTEN_major__) && defined(__EMSCRIPTEN_minor__) +#if (__EMSCRIPTEN_major__ > 1) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ > 39) +// ok +#elif (__EMSCRIPTEN_major__ == 1) && (__EMSCRIPTEN_minor__ == 39) && (__EMSCRIPTEN_tiny__ >= 7) +// ok +#else +#error "Emscripten >= 1.39.7 is required." +#endif +#endif +#elif defined(_WIN32) +#define MPT_OS_WINDOWS 1 +#if defined(WINAPI_FAMILY) +#include +#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) +#define MPT_OS_WINDOWS_WINRT 0 +#else +#define MPT_OS_WINDOWS_WINRT 1 +#endif +#else // !WINAPI_FAMILY +#define MPT_OS_WINDOWS_WINRT 0 +#endif // WINAPI_FAMILY +#elif defined(__APPLE__) +#define MPT_OS_MACOSX_OR_IOS 1 +//#include "TargetConditionals.h" +//#if TARGET_IPHONE_SIMULATOR +//#elif TARGET_OS_IPHONE +//#elif TARGET_OS_MAC +//#else +//#endif +#elif defined(__HAIKU__) +#define MPT_OS_HAIKU 1 +#elif defined(__ANDROID__) || defined(ANDROID) +#define MPT_OS_ANDROID 1 +#elif defined(__linux__) +#define MPT_OS_LINUX 1 +#elif defined(__DragonFly__) +#define MPT_OS_DRAGONFLYBSD 1 +#elif defined(__FreeBSD__) +#define MPT_OS_FREEBSD 1 +#elif defined(__OpenBSD__) +#define MPT_OS_OPENBSD 1 +#elif defined(__NetBSD__) +#define MPT_OS_NETBSD 1 +#elif defined(__unix__) +#define MPT_OS_GENERIC_UNIX 1 +#else +#define MPT_OS_UNKNOWN 1 +#endif + +#ifndef MPT_OS_DJGPP +#define MPT_OS_DJGPP 0 +#endif +#ifndef MPT_OS_EMSCRIPTEN +#define MPT_OS_EMSCRIPTEN 0 +#endif +#ifndef MPT_OS_WINDOWS +#define MPT_OS_WINDOWS 0 +#endif +#ifndef MPT_OS_WINDOWS_WINRT +#define MPT_OS_WINDOWS_WINRT 0 +#endif +#ifndef MPT_OS_MACOSX_OR_IOS +#define MPT_OS_MACOSX_OR_IOS 0 +#endif +#ifndef MPT_OS_HAIKU +#define MPT_OS_HAIKU 0 +#endif +#ifndef MPT_OS_ANDROID +#define MPT_OS_ANDROID 0 +#endif +#ifndef MPT_OS_LINUX +#define MPT_OS_LINUX 0 +#endif +#ifndef MPT_OS_DRAGONFLYBSD +#define MPT_OS_DRAGONFLYBSD 0 +#endif +#ifndef MPT_OS_FREEBSD +#define MPT_OS_FREEBSD 0 +#endif +#ifndef MPT_OS_OPENBSD +#define MPT_OS_OPENBSD 0 +#endif +#ifndef MPT_OS_NETBSD +#define MPT_OS_NETBSD 0 +#endif +#ifndef MPT_OS_GENERIC_UNIX +#define MPT_OS_GENERIC_UNIX 0 +#endif +#ifndef MPT_OS_UNKNOWN +#define MPT_OS_UNKNOWN 0 +#endif + + + +#endif // MPT_BASE_DETECT_OS.hpp Property changes on: src/mpt/base/detect_os.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/detect_quirks.hpp =================================================================== --- src/mpt/base/detect_quirks.hpp (nonexistent) +++ src/mpt/base/detect_quirks.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_DETECT_QUIRKS_HPP +#define MPT_BASE_DETECT_QUIRKS_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" + + + +#if MPT_COMPILER_MSVC +// Compiler has multiplication/division semantics when shifting signed integers. +#define MPT_COMPILER_SHIFT_SIGNED 1 +#endif + +#ifndef MPT_COMPILER_SHIFT_SIGNED +#define MPT_COMPILER_SHIFT_SIGNED 0 +#endif + + + +// This should really be based on __STDCPP_THREADS__, but that is not defined by +// GCC or clang. Stupid. +// Just assume multithreaded and disable for platforms we know are +// singlethreaded later on. +#define MPT_PLATFORM_MULTITHREADED 1 + +#if MPT_OS_DJGPP +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + +#if (MPT_OS_EMSCRIPTEN && !defined(__EMSCRIPTEN_PTHREADS__)) +#undef MPT_PLATFORM_MULTITHREADED +#define MPT_PLATFORM_MULTITHREADED 0 +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK +#endif + + + +#if MPT_OS_EMSCRIPTEN && defined(MPT_BUILD_AUDIOWORKLETPROCESSOR) +#define MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE +#endif + + + +#if MPT_OS_DJGPP +#define MPT_COMPILER_QUIRK_NO_WCHAR +#endif + + + +#if defined(__arm__) + +#if defined(__SOFTFP__) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#if defined(__VFP_FP__) +// native-endian IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#elif defined(__MAVERICK__) +// little-endian IEEE754, we assume native-endian though +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#else +// not IEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 1 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 1 +#endif + +#elif defined(__mips__) + +#if defined(__mips_soft_float) +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 1 +#else +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif + +#endif + +#if MPT_OS_EMSCRIPTEN +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 1 +#endif + +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER32 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER32 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_PREFER64 +#define MPT_COMPILER_QUIRK_FLOAT_PREFER64 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_EMULATED +#define MPT_COMPILER_QUIRK_FLOAT_EMULATED 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN +#define MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN 0 +#endif +#ifndef MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 +#define MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754 0 +#endif + + + +#endif // MPT_BASE_DETECT_QUIRKS_HPP Property changes on: src/mpt/base/detect_quirks.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/floatingpoint.hpp =================================================================== --- src/mpt/base/floatingpoint.hpp (nonexistent) +++ src/mpt/base/floatingpoint.hpp (working copy) @@ -0,0 +1,93 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_FLOATINGPOINT_HPP +#define MPT_BASE_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// fp half +// n/a + +// fp single +using single = float; +namespace float_literals { +constexpr single operator"" _fs(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp double +namespace float_literals { +constexpr double operator"" _fd(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp extended +namespace float_literals { +constexpr long double operator"" _fe(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +// fp quad +// n/a + +using float32 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float32 operator"" _f32(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +using float64 = std::conditional::type>::type>::type; +namespace float_literals { +constexpr float64 operator"" _f64(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + +template +struct float_traits { + static constexpr bool is_float = !std::numeric_limits::is_integer; + static constexpr bool is_hard = is_float && !MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_soft = is_float && MPT_COMPILER_QUIRK_FLOAT_EMULATED; + static constexpr bool is_float32 = is_float && (sizeof(T) == 4); + static constexpr bool is_float64 = is_float && (sizeof(T) == 8); + static constexpr bool is_native_endian = is_float && !MPT_COMPILER_QUIRK_FLOAT_NOTNATIVEENDIAN; + static constexpr bool is_ieee754_binary = is_float && std::numeric_limits::is_iec559 && !MPT_COMPILER_QUIRK_FLOAT_NOTIEEE754; + static constexpr bool is_ieee754_binary32 = is_float && is_ieee754_binary && is_float32; + static constexpr bool is_ieee754_binary64 = is_float && is_ieee754_binary && is_float64; + static constexpr bool is_ieee754_binary32ne = is_float && is_ieee754_binary && is_float32 && is_native_endian; + static constexpr bool is_ieee754_binary64ne = is_float && is_ieee754_binary && is_float64 && is_native_endian; + static constexpr bool is_preferred = is_float && ((is_float32 && MPT_COMPILER_QUIRK_FLOAT_PREFER32) || (is_float64 && MPT_COMPILER_QUIRK_FLOAT_PREFER64)); +}; + +// prefer smaller floats, but try to use IEEE754 floats +using nativefloat = + std::conditional::is_preferred, float32, std::conditional::is_preferred, float64, std::conditional::is_iec559, float, std::conditional::is_iec559, double, std::conditional::is_iec559, long double, float>::type>::type>::type>::type>::type; +namespace float_literals { +constexpr nativefloat operator"" _nf(long double lit) noexcept { + return static_cast(lit); +} +} // namespace float_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_FLOATINGPOINT_HPP Property changes on: src/mpt/base/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/integer.hpp =================================================================== --- src/mpt/base/integer.hpp (nonexistent) +++ src/mpt/base/integer.hpp (working copy) @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_INTEGER_HPP +#define MPT_BASE_INTEGER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using int8 = std::int8_t; +using int16 = std::int16_t; +using int32 = std::int32_t; +using int64 = std::int64_t; +using uint8 = std::uint8_t; +using uint16 = std::uint16_t; +using uint32 = std::uint32_t; +using uint64 = std::uint64_t; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_INTEGER_HPP Property changes on: src/mpt/base/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/macros.hpp =================================================================== --- src/mpt/base/macros.hpp (nonexistent) +++ src/mpt/base/macros.hpp (working copy) @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MACROS_HPP +#define MPT_BASE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +// Advanced inline attributes +#if MPT_COMPILER_MSVC +#define MPT_FORCEINLINE __forceinline +#define MPT_NOINLINE __declspec(noinline) +#elif MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_FORCEINLINE __attribute__((always_inline)) inline +#define MPT_NOINLINE __attribute__((noinline)) +#else +#define MPT_FORCEINLINE inline +#define MPT_NOINLINE +#endif + + + +// constexpr +#define MPT_CONSTEXPRINLINE constexpr MPT_FORCEINLINE +#if MPT_CXX_AT_LEAST(20) +#define MPT_CONSTEXPR20_FUN constexpr MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR constexpr +#else // !C++20 +#define MPT_CONSTEXPR20_FUN MPT_FORCEINLINE +#define MPT_CONSTEXPR20_VAR const +#endif // C++20 + + + +#define MPT_FORCE_CONSTEXPR(expr) [&]() { \ + constexpr auto x = (expr); \ + return x; \ +}() + + + +#if MPT_CXX_AT_LEAST(20) +#define MPT_IS_CONSTANT_EVALUATED20() std::is_constant_evaluated() +#define MPT_IS_CONSTANT_EVALUATED() std::is_constant_evaluated() +#else // !C++20 +#define MPT_IS_CONSTANT_EVALUATED20() false +// this pessimizes the case for C++17 by always assuming constexpr context, which implies always running constexpr-friendly code +#define MPT_IS_CONSTANT_EVALUATED() true +#endif // C++20 + + + +#if MPT_COMPILER_MSVC +#define MPT_MAYBE_CONSTANT_IF(x) \ + __pragma(warning(push)) \ + __pragma(warning(disable : 4127)) \ + if (x) \ + __pragma(warning(pop)) \ +/**/ +#endif + +#if MPT_COMPILER_GCC +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ + if (x) \ + _Pragma("GCC diagnostic pop") \ +/**/ +#endif + +#if MPT_COMPILER_CLANG +#define MPT_MAYBE_CONSTANT_IF(x) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \ + _Pragma("clang diagnostic ignored \"-Wtype-limits\"") \ + _Pragma("clang diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \ + if (x) \ + _Pragma("clang diagnostic pop") \ +/**/ +#endif + +#if !defined(MPT_MAYBE_CONSTANT_IF) +// MPT_MAYBE_CONSTANT_IF disables compiler warnings for conditions that may in some case be either always false or always true (this may turn out to be useful in ASSERTions in some cases). +#define MPT_MAYBE_CONSTANT_IF(x) if (x) +#endif + + + +#if MPT_OS_WINDOWS +#define MPT_UNUSED(x) UNREFERENCED_PARAMETER(x) +#else +#define MPT_UNUSED(x) static_cast(x) +#endif + + + +#define MPT_DISCARD(expr) static_cast(expr) + + + +// Use MPT_RESTRICT to indicate that a pointer is guaranteed to not be aliased. +#if MPT_COMPILER_MSVC || MPT_COMPILER_GCC || MPT_COMPILER_CLANG +#define MPT_RESTRICT __restrict +#else +#define MPT_RESTRICT +#endif + + + +#endif // MPT_BASE_MACROS_HPP Property changes on: src/mpt/base/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/math.hpp =================================================================== --- src/mpt/base/math.hpp (nonexistent) +++ src/mpt/base/math.hpp (working copy) @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_EMPTY_HPP +#define MPT_BASE_EMPTY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_OS_DJGPP + +inline double round(const long double val) { + return ::roundl(val); +} + +inline double round(const double val) { + return ::round(val); +} + +inline float round(const float val) { + return ::roundf(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::round +using std::round; + +#endif // MPT_OS_DJGPP + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_EMPTY_HPP Property changes on: src/mpt/base/math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/memory.hpp =================================================================== --- src/mpt/base/memory.hpp (nonexistent) +++ src/mpt/base/memory.hpp (working copy) @@ -0,0 +1,262 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/span.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +using byte_span = mpt::span; +using const_byte_span = mpt::span; + + + +// Tell which types are safe for mpt::byte_cast. +// signed char is actually not allowed to alias into an object representation, +// which means that, if the actual type is not itself signed char but char or +// unsigned char instead, dereferencing the signed char pointer is undefined +// behaviour. +template +struct is_byte_castable : public std::false_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; +template <> +struct is_byte_castable : public std::true_type { }; + + +template +struct is_byte : public std::false_type { }; +template <> +struct is_byte : public std::true_type { }; +template <> +struct is_byte : public std::true_type { }; + + +template +constexpr bool declare_binary_safe(const T &) noexcept { + return false; +} + +constexpr bool declare_binary_safe(const char &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const uint8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const int8 &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const std::byte &) noexcept { + return true; +} + +// Tell which types are safe to binary write into files. +// By default, no types are safe. +// When a safe type gets defined, +// also specialize this template so that IO functions will work. +template +struct is_binary_safe : public std::conditional::type { }; + +// Generic Specialization for arrays. +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; +template +struct is_binary_safe> : public is_binary_safe { }; + + +template +constexpr bool check_binary_size(std::size_t size) noexcept { + return true + && (sizeof(T) == size) + && (alignof(T) == 1) + && std::is_standard_layout::value + && std::has_unique_object_representations::value + && mpt::is_binary_safe::value; +} + + +template +struct byte_cast_impl { + inline Tdst operator()(Tsrc src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + // not checking is_byte_castable here because we are actually + // doing a static_cast and converting the value + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return static_cast(src); + } +}; + +template +struct byte_cast_impl, mpt::span> { + inline mpt::span operator()(mpt::span src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return mpt::as_span(mpt::byte_cast_impl()(src.data()), mpt::byte_cast_impl()(src.data() + src.size())); + } +}; + +template +struct byte_cast_impl { + inline Tdst * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl; + +template +struct void_cast_impl { + inline Tdst * operator()(void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline Tdst * operator()(const void * src) const noexcept { + static_assert(sizeof(Tdst) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +template +struct void_cast_impl { + inline const void * operator()(Tsrc * src) const noexcept { + static_assert(sizeof(Tsrc) == sizeof(std::byte)); + static_assert(mpt::is_byte_castable::value); + static_assert(std::is_integral::value || mpt::is_byte::value); + return reinterpret_cast(src); + } +}; + +// casts between different byte (char) types or pointers to these types +template +inline Tdst byte_cast(Tsrc src) noexcept { + return byte_cast_impl()(src); +} + +// casts between pointers to void and pointers to byte +template +inline Tdst void_cast(Tsrc src) noexcept { + return void_cast_impl()(src); +} + + + +template +MPT_CONSTEXPRINLINE std::byte as_byte(T src) noexcept { + static_assert(std::is_integral::value); + return static_cast(static_cast(src)); +} + + + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } + inline mpt::byte_span operator()(T & v) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(&v), sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } + inline mpt::byte_span operator()(T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +template +struct as_raw_memory_impl { + inline mpt::const_byte_span operator()(const T (&v)[N]) const { + static_assert(mpt::is_binary_safe::type>::value); + return mpt::as_span(reinterpret_cast(v), N * sizeof(T)); + } +}; + +// In order to be able to partially specialize it, +// as_raw_memory is implemented via a class template. +// Do not overload or specialize as_raw_memory directly. +// Using a wrapper (by default just around a cast to const std::byte *), +// allows for implementing raw memory access +// via on-demand generating a cached serialized representation. +template +inline mpt::const_byte_span as_raw_memory(const T & v) { + return mpt::as_raw_memory_impl()(v); +} +template +inline mpt::byte_span as_raw_memory(T & v) { + return mpt::as_raw_memory_impl()(v); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_MEMORY_HPP Property changes on: src/mpt/base/memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/namespace.hpp =================================================================== --- src/mpt/base/namespace.hpp (nonexistent) +++ src/mpt/base/namespace.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NAMESPACE_HPP +#define MPT_BASE_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/version.hpp" +#include "mpt/base/compiletime_warning.hpp" + + + +#if !defined(MPT_INLINE_NS) + +#define MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) v##a##_##b##_##c##_##d +#define MPT_BUILD_VERSION_NAMESPACE(a, b, c, d) MPT_BUILD_VERSION_NAMESPACE_IMPL(a, b, c, d) + +#define MPT_VERSION_NAMESPACE MPT_BUILD_VERSION_NAMESPACE(MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH, MPT_VERSION_BUILD) + +#if MPT_OS_WINDOWS +#ifdef UNICODE +#define MPT_VERSION_ABI_OS u +#else +#define MPT_VERSION_ABI_OS 8 +#endif +#else +#define MPT_VERSION_ABI_OS _ +#endif + +#if MPT_LIBC_GENERIC +#define MPT_VERSION_ABI_LIBC _ +#elif MPT_LIBC_MS +#ifdef _DLL +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MDd +#else +#define MPT_VERSION_ABI_LIBC MDr +#endif +#else +#ifdef _DEBUG +#define MPT_VERSION_ABI_LIBC MTd +#else +#define MPT_VERSION_ABI_LIBC MTr +#endif +#endif +#elif MPT_LIBC_GLIBC +#define MPT_VERSION_ABI_LIBC G +#else +#define MPT_VERSION_ABI_LIBC _ +#endif + +#define MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) ABI_##a##_##b +#define MPT_BUILD_ABI_NAMESPACE(a, b) MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) + +#define MPT_ABI_NAMESPACE MPT_BUILD_ABI_NAMESPACE(MPT_VERSION_ABI_OS, MPT_VERSION_ABI_LIBC) + +#if !defined(MPT_PROJECT_NAMESPACE) +MPT_WARNING("Please #define MPT_PROJECT_NAMESPACE or #define MPT_INLINE_NS in build configuration.") +#define MPT_PROJECT_NAMESPACE x +#endif // !MPT_PROJECT_NAMESPACE + +#define MPT_BUILD_INLINE_NS_IMPL(a, b, c) a##_##b##_##c +#define MPT_BUILD_INLINE_NS(a, b, c) MPT_BUILD_INLINE_NS_IMPL(a, b, c) + +#define MPT_INLINE_NS MPT_BUILD_INLINE_NS(MPT_VERSION_NAMESPACE, MPT_ABI_NAMESPACE, MPT_PROJECT_NAMESPACE) + +#endif // !MPT_INLINE_NS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_NAMESPACE_HPP Property changes on: src/mpt/base/namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/numeric.hpp =================================================================== --- src/mpt/base/numeric.hpp (nonexistent) +++ src/mpt/base/numeric.hpp (working copy) @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_NUMERIC_HPP +#define MPT_BASE_NUMERIC_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/bit.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + return static_cast(x % m); + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; +template <> +struct ModIfNotZeroImpl { + template + constexpr Tval mod(Tval x) { + return x; + } +}; + +// Returns x % m if m != 0, x otherwise. +// i.e. "return (m == 0) ? x : (x % m);", but without causing a warning with stupid older compilers +template +constexpr Tval modulo_if_not_zero(Tval x) { + return ModIfNotZeroImpl().mod(x); +} + +// rounds x up to multiples of target +template +constexpr T align_up(T x, T target) { + return ((x + (target - 1)) / target) * target; +} + +// rounds x down to multiples of target +template +constexpr T align_down(T x, T target) { + return (x / target) * target; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_ALGORITHM_HPP Property changes on: src/mpt/base/numeric.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/pointer.hpp =================================================================== --- src/mpt/base/pointer.hpp (nonexistent) +++ src/mpt/base/pointer.hpp (working copy) @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_POINTER_HPP +#define MPT_BASE_POINTER_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr int arch_bits = sizeof(void *) * 8; +inline constexpr std::size_t pointer_size = sizeof(void *); + + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tsrc & src) noexcept { + return src; + } +}; + +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; +template +struct pointer_cast_helper { + static constexpr Tdst cast(const Tptr * const & src) noexcept { + return reinterpret_cast(src); + } +}; + + +template +constexpr Tdst pointer_cast(const Tsrc & src) noexcept { + return pointer_cast_helper::cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_POINTER_HPP Property changes on: src/mpt/base/pointer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/preprocessor.hpp =================================================================== --- src/mpt/base/preprocessor.hpp (nonexistent) +++ src/mpt/base/preprocessor.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_PREPROCESSOR_HPP +#define MPT_BASE_PREPROCESSOR_HPP + + + +#define MPT_PP_DEFER(m, ...) m(__VA_ARGS__) + +#define MPT_PP_STRINGIFY(x) #x + +#define MPT_PP_JOIN_HELPER(a, b) a##b +#define MPT_PP_JOIN(a, b) MPT_PP_JOIN_HELPER(a, b) + +#define MPT_PP_UNIQUE_IDENTIFIER(prefix) MPT_PP_JOIN(prefix, __LINE__) + + + +#endif // MPT_BASE_PREPROCESSOR_HPP Property changes on: src/mpt/base/preprocessor.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_cast.hpp =================================================================== --- src/mpt/base/saturate_cast.hpp (nonexistent) +++ src/mpt/base/saturate_cast.hpp (working copy) @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_CAST_HPP +#define MPT_BASE_SATURATE_CAST_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Saturate the value of src to the domain of Tdst +template +constexpr Tdst saturate_cast(Tsrc src) noexcept { + // This code tries not only to obviously avoid overflows but also to avoid signed/unsigned comparison warnings and type truncation warnings (which in fact would be safe here) by explicit casting. + static_assert(std::numeric_limits::is_integer); + static_assert(std::numeric_limits::is_integer); + if constexpr (std::numeric_limits::is_signed && std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::max(static_cast(std::numeric_limits::min()), std::min(src, static_cast(std::numeric_limits::max())))); + } + } else if constexpr (!std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(src); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else if constexpr (std::numeric_limits::is_signed && !std::numeric_limits::is_signed) { + if constexpr (sizeof(Tdst) > sizeof(Tsrc)) { + return static_cast(src); + } else if constexpr (sizeof(Tdst) == sizeof(Tsrc)) { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } else { + return static_cast(std::min(src, static_cast(std::numeric_limits::max()))); + } + } else { // Tdst unsigned, Tsrc signed + if constexpr (sizeof(Tdst) >= sizeof(Tsrc)) { + return static_cast(std::max(static_cast(0), src)); + } else { + return static_cast(std::max(static_cast(0), std::min(src, static_cast(std::numeric_limits::max())))); + } + } +} + +template +constexpr Tdst saturate_cast(double src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + +template +constexpr Tdst saturate_cast(float src) { + if (src >= static_cast(std::numeric_limits::max())) { + return std::numeric_limits::max(); + } + if (src <= static_cast(std::numeric_limits::min())) { + return std::numeric_limits::min(); + } + return static_cast(src); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_CAST_HPP Property changes on: src/mpt/base/saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/saturate_round.hpp =================================================================== --- src/mpt/base/saturate_round.hpp (nonexistent) +++ src/mpt/base/saturate_round.hpp (working copy) @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SATURATE_ROUND_HPP +#define MPT_BASE_SATURATE_ROUND_HPP + + + +#include "mpt/base/namespace.hpp" + +#include "mpt/base/math.hpp" +#include "mpt/base/saturate_cast.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Rounds given double value to nearest integer value of type T. +// Out-of-range values are saturated to the specified integer type's limits. + +template +inline T saturate_round(float val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + +template +inline T saturate_round(long double val) { + static_assert(std::numeric_limits::is_integer); + return mpt::saturate_cast(mpt::round(val)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SATURATE_ROUND_HPP Property changes on: src/mpt/base/saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/secure.hpp =================================================================== --- src/mpt/base/secure.hpp (nonexistent) +++ src/mpt/base/secure.hpp (working copy) @@ -0,0 +1,198 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SECURE_HPP +#define MPT_BASE_SECURE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace secure { + + + +inline MPT_NOINLINE void memzero(std::byte * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(void * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = static_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(char * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + +inline MPT_NOINLINE void memzero(uint8 * const dst, std::size_t const len) noexcept { + std::atomic_thread_fence(std::memory_order_seq_cst); + volatile std::byte * volatile p = reinterpret_cast(dst); + std::atomic_thread_fence(std::memory_order_seq_cst); + for (volatile std::size_t i = 0; i < len; ++i) { + p[i] = std::byte{0}; + } + std::atomic_thread_fence(std::memory_order_seq_cst); +} + + + +template +inline MPT_NOINLINE void clear(T & val) { + std::atomic_signal_fence(std::memory_order_seq_cst); + volatile T * volatile v = &val; + std::atomic_thread_fence(std::memory_order_seq_cst); + *v = T{}; + std::atomic_signal_fence(std::memory_order_seq_cst); +} + + + +class byte { +private: + std::byte value; + +public: + byte() noexcept + : value(std::byte{0}) { + return; + } + explicit byte(std::byte value) noexcept + : value(value) { + return; + } + byte(const byte & other) noexcept + : value(other.value) { + return; + } + byte(byte && other) noexcept + : value(std::move(other.value)) { + mpt::secure::clear(other.value); + } + byte & operator=(const byte & other) noexcept { + if (&other == this) { + return *this; + } + value = other.value; + return *this; + } + byte & operator==(byte && other) noexcept { + if (&other == this) { + return *this; + } + value = std::move(other.value); + mpt::secure::clear(other.value); + return *this; + } + explicit operator std::byte() const noexcept { + return value; + } + ~byte() { + mpt::secure::clear(value); + } +}; + + + +class buffer { +private: + std::vector m_data; + +public: + buffer() + : m_data(0) { + return; + } + explicit buffer(const std::vector & data) + : m_data(data) { + return; + } + explicit buffer(const std::byte * beg, const std::byte * end) + : m_data(beg, end) { + return; + } + buffer(const buffer & other) + : m_data(other.m_data) { + return; + } + buffer(buffer && other) noexcept + : m_data(std::move(other.m_data)) { + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + } + buffer & operator=(const buffer & other) { + if (&other == this) { + return *this; + } + m_data = other.m_data; + return *this; + } + buffer & operator=(buffer && other) noexcept { + if (&other == this) { + return *this; + } + m_data = std::move(other.m_data); + mpt::secure::memzero(other.m_data.data(), other.m_data.size()); + return *this; + } + ~buffer() { + mpt::secure::memzero(m_data.data(), m_data.size()); + m_data.resize(0); + m_data.shrink_to_fit(); + } + explicit operator std::vector() const { + return m_data; + } + const std::byte * data() const { + return m_data.data(); + } + std::byte * data() { + return m_data.data(); + } + std::size_t size() const { + return m_data.size(); + } +}; + + + +} // namespace secure + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SECURE_HPP Property changes on: src/mpt/base/secure.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/semantic_version.hpp =================================================================== --- src/mpt/base/semantic_version.hpp (nonexistent) +++ src/mpt/base/semantic_version.hpp (working copy) @@ -0,0 +1,94 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SEMANTIC_VERSION_HPP +#define MPT_BASE_SEMANTIC_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/version.hpp" + + + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct semantic_version { + unsigned long long major = 0; + unsigned long long minor = 0; + unsigned long long patch = 0; + constexpr std::tuple as_tuple() const noexcept { + return std::make_tuple(major, minor, patch); + } +}; + +constexpr bool operator==(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(semantic_version const a, semantic_version const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +struct version_info { + semantic_version semver{}; + unsigned long long build = 0; + constexpr std::tuple, unsigned long long> as_tuple() const noexcept { + return std::make_tuple(semver.as_tuple(), build); + } + template + friend Tostream & operator<<(Tostream & os, version_info const vi) { + if (vi.build > 0) { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch << "+build." << vi.build; + } else { + os << vi.semver.major << "." << vi.semver.minor << "." << vi.semver.patch; + } + return os; + } +}; + +constexpr bool operator==(version_info const a, version_info const b) noexcept { + return a.as_tuple() == b.as_tuple(); +} +constexpr bool operator!=(version_info const a, version_info const b) noexcept { + return a.as_tuple() != b.as_tuple(); +} +constexpr bool operator<(version_info const a, version_info const b) noexcept { + return a.as_tuple() < b.as_tuple(); +} +constexpr bool operator>(version_info const a, version_info const b) noexcept { + return a.as_tuple() > b.as_tuple(); +} +constexpr bool operator<=(version_info const a, version_info const b) noexcept { + return a.as_tuple() <= b.as_tuple(); +} +constexpr bool operator>=(version_info const a, version_info const b) noexcept { + return a.as_tuple() >= b.as_tuple(); +} + +constexpr inline version_info Version = {{MPT_VERSION_MAJOR, MPT_VERSION_MINOR, MPT_VERSION_PATCH}, MPT_VERSION_BUILD}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SEMANTIC_VERSION_HPP Property changes on: src/mpt/base/semantic_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/source_location.hpp =================================================================== --- src/mpt/base/source_location.hpp (nonexistent) +++ src/mpt/base/source_location.hpp (working copy) @@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SOURCE_LOCATION_HPP +#define MPT_BASE_SOURCE_LOCATION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_AT_LEAST(20) +#include +#endif // C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::source_location; + +#define MPT_SOURCE_LOCATION_CURRENT() std::source_location::current() + +#else // !C++20 + +#if MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#elif MPT_COMPILER_GCC + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#elif MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0) + +#define MPT_SOURCE_LOCATION_FILE __builtin_FILE() +#define MPT_SOURCE_LOCATION_FUNCTION __builtin_FUNCTION() +#define MPT_SOURCE_LOCATION_LINE __builtin_LINE() +#define MPT_SOURCE_LOCATION_COLUMN __builtin_COLUMN() + +#else + +#define MPT_SOURCE_LOCATION_FILE __FILE__ +#define MPT_SOURCE_LOCATION_FUNCTION "" +#define MPT_SOURCE_LOCATION_LINE __LINE__ +#define MPT_SOURCE_LOCATION_COLUMN 0 + +#endif + +// compatible with C++20 std::source_location +struct source_location { +private: + const char * m_file_name; + const char * m_function_name; + uint32 m_line; + uint32 m_column; + +public: + constexpr source_location() noexcept + : m_file_name("") + , m_function_name("") + , m_line(0) + , m_column(0) { + } + constexpr source_location(const char * file, const char * function, uint32 line, uint32 column) noexcept + : m_file_name(file) + , m_function_name(function) + , m_line(line) + , m_column(column) { + } + source_location(const source_location &) = default; + source_location(source_location &&) = default; + static constexpr source_location current(const char * file = MPT_SOURCE_LOCATION_FILE, const char * function = MPT_SOURCE_LOCATION_FUNCTION, uint32 line = MPT_SOURCE_LOCATION_LINE, uint32 column = MPT_SOURCE_LOCATION_COLUMN) noexcept { + return source_location(file, function, line, column); + } + constexpr uint32 line() const noexcept { + return m_line; + } + constexpr uint32 column() const noexcept { + return m_column; + } + constexpr const char * file_name() const noexcept { + return m_file_name; + } + constexpr const char * function_name() const noexcept { + return m_function_name; + } +}; + + +#if (MPT_COMPILER_MSVC && MPT_MSVC_AT_LEAST(2019, 6)) || MPT_COMPILER_GCC || (MPT_COMPILER_CLANG && MPT_CLANG_AT_LEAST(9, 0, 0)) +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current() +#else +#define MPT_SOURCE_LOCATION_CURRENT() mpt::source_location::current(__FILE__, __func__, __LINE__, 0) +#endif + +#endif // C++20 + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SOURCE_LOCATION_HPP Property changes on: src/mpt/base/source_location.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/span.hpp =================================================================== --- src/mpt/base/span.hpp (nonexistent) +++ src/mpt/base/span.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_SPAN_HPP +#define MPT_BASE_SPAN_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include +#if MPT_CXX_AT_LEAST(20) +#include +#else // !C++20 +#include +#include +#include +#endif // C++20 + +#if MPT_CXX_BEFORE(20) +#include +#endif // !C++20 + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::dynamic_extent; +using std::span; + +#else // !C++20 + +// Simplified version of gsl::span. +// Non-owning read-only or read-write view into a contiguous block of T +// objects, i.e. equivalent to a (beg,end) or (data,size) tuple. +// Can eventually be replaced without further modifications with a full C++20 +// std::span. + +inline constexpr std::size_t dynamic_extent = std::numeric_limits::max(); + +template +class span { + +public: + using element_type = T; + using value_type = typename std::remove_cv::type; + using index_type = std::size_t; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + + using iterator = pointer; + using const_iterator = const_pointer; + + using difference_type = typename std::iterator_traits::difference_type; + +private: + T * m_beg; + T * m_end; + +public: + span() noexcept + : m_beg(nullptr) + , m_end(nullptr) { + } + + span(pointer beg, pointer end) + : m_beg(beg) + , m_end(end) { + } + + span(pointer data, index_type size) + : m_beg(data) + , m_end(data + size) { + } + + template + span(element_type (&arr)[N]) + : m_beg(arr) + , m_end(arr + N) { + } + + template + span(std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + template + span(const std::array & arr) + : m_beg(arr.data()) + , m_end(arr.data() + arr.size()) { + } + + span(const span & other) noexcept = default; + + template + span(const span & other) + : m_beg(other.begin()) + , m_end(other.end()) { + } + + span & operator=(const span & other) noexcept = default; + + iterator begin() const { + return iterator(m_beg); + } + + iterator end() const { + return iterator(m_end); + } + + const_iterator cbegin() const { + return const_iterator(begin()); + } + + const_iterator cend() const { + return const_iterator(end()); + } + + reference operator[](index_type index) { + return m_beg[index]; + } + + const_reference operator[](index_type index) const { + return m_beg[index]; + } + + bool operator==(span const & other) const noexcept { + return size() == other.size() && (m_beg == other.m_beg || std::equal(begin(), end(), other.begin())); + } + + bool operator!=(span const & other) const noexcept { + return !(*this == other); + } + + pointer data() const noexcept { + return m_beg; + } + + bool empty() const noexcept { + return size() == 0; + } + + index_type size() const noexcept { + return static_cast(std::distance(m_beg, m_end)); + } + + index_type length() const noexcept { + return size(); + } + + span subspan(std::size_t offset, std::size_t count = mpt::dynamic_extent) const { + return span(data() + offset, (count == mpt::dynamic_extent) ? (size() - offset) : count); + } + + span first(std::size_t count) const { + return span(data(), count); + } + + span last(std::size_t count) const { + return span(data() + (size() - count), count); + } + +}; // class span + +#endif // C++20 + +template +inline span as_span(T * beg, T * end) { + return span(beg, end); +} + +template +inline span as_span(T * data, std::size_t size) { + return span(data, size); +} + +template +inline span as_span(T (&arr)[N]) { + return span(std::begin(arr), std::end(arr)); +} + +template +inline span as_span(std::array & cont) { + return span(cont); +} + +template +inline span as_span(const std::array & cont) { + return span(cont); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_SPAN_HPP Property changes on: src/mpt/base/span.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_arithmetic_shift.hpp =================================================================== --- src/mpt/base/tests/tests_base_arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_arithmetic_shift.hpp (working copy) @@ -0,0 +1,321 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/arithmetic_shift.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace arithmetic_shift { + +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +{ + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), mpt::rshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), mpt::rshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), mpt::rshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), mpt::rshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), mpt::rshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), mpt::rshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), mpt::rshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), mpt::rshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), mpt::rshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), mpt::rshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), mpt::rshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), mpt::rshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), mpt::rshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), mpt::rshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), mpt::rshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), mpt::rshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), mpt::rshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), mpt::rshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), mpt::rshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), mpt::rshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), mpt::rshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), mpt::rshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), mpt::rshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), mpt::rshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), mpt::rshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), mpt::rshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), mpt::rshift_signed_standard(32767, 15)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), mpt::lshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), mpt::lshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), mpt::lshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), mpt::lshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), mpt::lshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), mpt::lshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), mpt::lshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), mpt::lshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), mpt::lshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), mpt::lshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), mpt::lshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), mpt::lshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), mpt::lshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), mpt::lshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), mpt::lshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), mpt::lshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), mpt::lshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), mpt::lshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), mpt::lshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), mpt::lshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), mpt::lshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), mpt::lshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), mpt::lshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), mpt::lshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), mpt::lshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), mpt::lshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), mpt::lshift_signed_standard(32767, 15)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), (-32768) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), (-32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), (-32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), (-2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), (-1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), (0) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), (1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), (2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), (32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), (32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), (-32768) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), (-32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), (-32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), (-2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), (-1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), (0) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), (1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), (2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), (32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), (32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), (-32768) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), (-32767) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), (-32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), (-2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), (-1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), (0) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), (1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), (2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), (32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), (32767) >> 15); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), (-32768) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), (-32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), (-32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), (-2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), (-1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), (0) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), (1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), (2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), (32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), (32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), (-32768) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), (-32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), (-32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), (-2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), (-1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), (0) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), (1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), (2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), (32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), (32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), (-32768) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), (-32767) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), (-32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), (-2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), (-1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), (0) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), (1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), (2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), (32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), (32767) << 15); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_standard(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_standard(0x7fffffff, 31)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_undefined(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_undefined(0x7fffffff, 31)); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(0x7fffffffffffffffll, 63)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 63)); + +#endif +} + +} // namespace arithmetic_shift +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/tests/tests_base_arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_bit.hpp =================================================================== --- src/mpt/base/tests/tests_base_bit.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_bit.hpp (working copy) @@ -0,0 +1,220 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BASE_BIT_HPP +#define MPT_BASE_TESTS_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace bit { + +MPT_TEST_GROUP_INLINE("mpt/base/bit") +{ +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian_probe()); +#endif + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_little()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::little); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::little); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::little); +#endif + } + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_big()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::big); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::big); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::big); +#endif + } + + MPT_TEST_EXPECT_EQUAL(mpt::popcount(static_cast(int32(-1))), 32); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(0u), 0); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(1u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(2u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(3u), 2); + + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(0u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(1u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(2u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(3u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(4u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(5u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(6u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(7u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(8u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(9u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x7fffffffu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000000u)), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000001u)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xfffffffeu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xffffffffu)), false); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(0u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(3u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(5u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(6u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(7u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(9u), 16u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x7fffffffu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000000u)), 0x80000000u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000001u)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xfffffffeu)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xffffffffu)), 0u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(5u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(6u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(7u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(9u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x7fffffffu)), 0x40000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000000u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000001u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xfffffffeu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xffffffffu)), 0x80000000u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(4u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(5u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(6u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(7u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(8u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(9u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x7fffffffu)), 31u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000000u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000001u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xfffffffeu)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xffffffffu)), 32u); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111110)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111100)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11100000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11000000)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b10000000)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000001)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000011)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00011111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00111111)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b01111111)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000001)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000011)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00011111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00111111)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b01111111)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111110)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111100)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11100000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11000000)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b10000000)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xffffffffu), 32); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xfffffffeu), 31); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x80000000u), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7fffffffu), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7ffffffeu), 30); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000007u), 3); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000006u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000005u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000004u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000003u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000002u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000001u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000000u), 0); +} + +} // namespace bit +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BASE_BIT_HPP Property changes on: src/mpt/base/tests/tests_base_bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_math.hpp =================================================================== --- src/mpt/base/tests/tests_base_math.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_math.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_MATH_HPP +#define MPT_BASE_TESTS_MATH_HPP + + + +#include "mpt/base/math.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace math { + +MPT_TEST_GROUP_INLINE("mpt/base/math") +{ + MPT_TEST_EXPECT_EQUAL(mpt::round(1.99), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.5), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.1), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.1), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.5), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.9), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.4), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.7), -2.0); +} + +} // namespace math +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_MATH_HPP Property changes on: src/mpt/base/tests/tests_base_math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_cast.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_cast.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_cast.hpp (working copy) @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_CAST_HPP +#define MPT_BASE_TESTS_SATURATE_CAST_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_cast { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +{ + // trivials + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(-1), -1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(0), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(1), 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + + // signed / unsigned + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int32)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int64)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint64)std::numeric_limits::max()); + + // overflow + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), (uint16)std::numeric_limits::max() + 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), (uint32)std::numeric_limits::max() + 1); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -128); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 32767); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000u); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(static_cast(std::numeric_limits::max())), std::numeric_limits::max()); +} + +} // namespace saturate_cast +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_CAST_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_round.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_round.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_round.hpp (working copy) @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_ROUND_HPP +#define MPT_BASE_TESTS_SATURATE_ROUND_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_round.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_round { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +{ + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() - 0.4), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() + 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() - 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.499), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(110.1), 110); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-110.1), -110); + + // These should fail to compile + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + + // This should trigger assert in Round. + //MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-129), 0); +} + +} // namespace saturate_round +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_ROUND_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_wrapping_divide.hpp =================================================================== --- src/mpt/base/tests/tests_base_wrapping_divide.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_wrapping_divide.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP +#define MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/wrapping_divide.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace wrapping_divide { + +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +{ + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-25, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-23, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-8, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-6, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-5, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-4, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-3, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-2, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-1, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(1, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(2, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(3, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(4, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(5, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(6, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(23, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(25, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(uint32(0x7fffffff), uint32(0x80000000)), uint32(0x7fffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0x7ffffffe), int32(0x7fffffff)), int32(0x7ffffffe)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(2)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(2)), int32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(2)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7fffffff)), int32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffe)), int32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffe)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffd)), int32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffd)), int32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffd)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7fffffff)), int32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7ffffffe)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7ffffffe)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(2)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(2)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(2)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000001), uint32(0xffffffff)), uint32(0xbffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000000), uint32(0xffffffff)), uint32(0xbfffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x3fffffff), uint32(0xffffffff)), uint32(0xc0000000)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000001)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000001)), uint32(2)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000001)), uint32(3)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7fffffff)), uint32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffe)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffd)), uint32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffd)), uint32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffd)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7fffffff)), uint32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7ffffffe)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-15, 7), -3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-14, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-13, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-12, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-11, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-10, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-9, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-8, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-7, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-6, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-5, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-4, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-3, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-2, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-1, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(1, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(2, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(3, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(4, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(5, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(6, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(7, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(9, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(10, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(11, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(12, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(13, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(14, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(15, 7), 2); +} + +} // namespace wrapping_divide +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/tests/tests_base_wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_arithmetic_shift.hpp =================================================================== --- src/mpt/base/tests/tests_base_arithmetic_shift.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_arithmetic_shift.hpp (working copy) @@ -0,0 +1,321 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP +#define MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP + + + +#include "mpt/base/arithmetic_shift.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace arithmetic_shift { + +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +{ + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), mpt::rshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), mpt::rshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), mpt::rshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), mpt::rshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), mpt::rshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), mpt::rshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), mpt::rshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), mpt::rshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), mpt::rshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), mpt::rshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), mpt::rshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), mpt::rshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), mpt::rshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), mpt::rshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), mpt::rshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), mpt::rshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), mpt::rshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), mpt::rshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), mpt::rshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), mpt::rshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), mpt::rshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), mpt::rshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), mpt::rshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), mpt::rshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), mpt::rshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), mpt::rshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), mpt::rshift_signed_standard(32767, 15)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), mpt::lshift_signed_standard(-32768, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), mpt::lshift_signed_standard(-32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), mpt::lshift_signed_standard(-32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), mpt::lshift_signed_standard(-2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), mpt::lshift_signed_standard(2, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), mpt::lshift_signed_standard(32766, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), mpt::lshift_signed_standard(32767, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), mpt::lshift_signed_standard(-32768, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), mpt::lshift_signed_standard(-32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), mpt::lshift_signed_standard(-32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), mpt::lshift_signed_standard(-2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), mpt::lshift_signed_standard(-1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), mpt::lshift_signed_standard(0, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), mpt::lshift_signed_standard(1, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), mpt::lshift_signed_standard(2, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), mpt::lshift_signed_standard(32766, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), mpt::lshift_signed_standard(32767, 14)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), mpt::lshift_signed_standard(-32768, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), mpt::lshift_signed_standard(-32767, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), mpt::lshift_signed_standard(-32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), mpt::lshift_signed_standard(-2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), mpt::lshift_signed_standard(-1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), mpt::lshift_signed_standard(0, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), mpt::lshift_signed_standard(1, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), mpt::lshift_signed_standard(2, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), mpt::lshift_signed_standard(32766, 15)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), mpt::lshift_signed_standard(32767, 15)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 1), (-32768) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 1), (-32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 1), (-32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 1), (-2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), (-1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), (0) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), (1) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 1), (2) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 1), (32766) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 1), (32767) >> 1); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 14), (-32768) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 14), (-32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 14), (-32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 14), (-2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 14), (-1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 14), (0) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 14), (1) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 14), (2) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 14), (32766) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 14), (32767) >> 14); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32768, 15), (-32768) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32767, 15), (-32767) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-32766, 15), (-32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-2, 15), (-2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 15), (-1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 15), (0) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 15), (1) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(2, 15), (2) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32766, 15), (32766) >> 15); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(32767, 15), (32767) >> 15); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 1), (-32768) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 1), (-32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 1), (-32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 1), (-2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), (-1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), (0) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), (1) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 1), (2) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 1), (32766) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 1), (32767) << 1); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 14), (-32768) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 14), (-32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 14), (-32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 14), (-2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 14), (-1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 14), (0) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 14), (1) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 14), (2) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 14), (32766) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 14), (32767) << 14); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32768, 15), (-32768) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32767, 15), (-32767) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-32766, 15), (-32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-2, 15), (-2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 15), (-1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 15), (0) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 15), (1) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(2, 15), (2) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32766, 15), (32766) << 15); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(32767, 15), (32767) << 15); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_standard(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_standard(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_standard(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_standard(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_standard(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_standard(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_standard(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_standard(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_standard(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_standard(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_standard(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_standard(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_standard(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_standard(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_standard(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_standard(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_standard(0x7fffffff, 31)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 1), mpt::rshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 1), mpt::rshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 1), mpt::rshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 1), mpt::rshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 1), mpt::rshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 1), mpt::rshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0 - 0x80000000, 31), mpt::rshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1, 31), mpt::rshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0, 31), mpt::rshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1, 31), mpt::rshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffe, 31), mpt::rshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffff, 31), mpt::rshift_signed_undefined(0x7fffffff, 31)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 1), mpt::lshift_signed_undefined(0 - 0x80000000, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_undefined(-0x7fffffff, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_undefined(-0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 1), mpt::lshift_signed_undefined(-1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 1), mpt::lshift_signed_undefined(0, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 1), mpt::lshift_signed_undefined(1, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 1), mpt::lshift_signed_undefined(0x7ffffffe, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 1), mpt::lshift_signed_undefined(0x7fffffff, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0 - 0x80000000, 31), mpt::lshift_signed_undefined(0 - 0x80000000, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_undefined(-0x7fffffff, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_undefined(-0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1, 31), mpt::lshift_signed_undefined(-1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0, 31), mpt::lshift_signed_undefined(0, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1, 31), mpt::lshift_signed_undefined(1, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffe, 31), mpt::lshift_signed_undefined(0x7ffffffe, 31)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffff, 31), mpt::lshift_signed_undefined(0x7fffffff, 31)); + +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_standard(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_standard(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_standard(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_standard(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_standard(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_standard(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_standard(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(0x7fffffffffffffffll, 63)); + +#if MPT_COMPILER_SHIFT_SIGNED + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 1), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 1), mpt::rshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 1), mpt::rshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 1), mpt::rshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ull - 0x8000000000000000ull, 63), mpt::rshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(-1ll, 63), mpt::rshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0ll, 63), mpt::rshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(1ll, 63), mpt::rshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::rshift_signed(0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(0x7fffffffffffffffll, 63)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 1), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 1), mpt::lshift_signed_undefined(-1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 1), mpt::lshift_signed_undefined(0ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 1), mpt::lshift_signed_undefined(1ll, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 1)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 1)); + + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ull - 0x8000000000000000ull, 63), mpt::lshift_signed_undefined(0ull - 0x8000000000000000ull, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(-1ll, 63), mpt::lshift_signed_undefined(-1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0ll, 63), mpt::lshift_signed_undefined(0ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(1ll, 63), mpt::lshift_signed_undefined(1ll, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(0x7ffffffffffffffell, 63)); + MPT_TEST_EXPECT_EQUAL(mpt::lshift_signed(0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(0x7fffffffffffffffll, 63)); + +#endif +} + +} // namespace arithmetic_shift +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_ARITHMETIC_SHIFT_HPP Property changes on: src/mpt/base/tests/tests_base_arithmetic_shift.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_bit.hpp =================================================================== --- src/mpt/base/tests/tests_base_bit.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_bit.hpp (working copy) @@ -0,0 +1,220 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BASE_BIT_HPP +#define MPT_BASE_TESTS_BASE_BIT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace bit { + +MPT_TEST_GROUP_INLINE("mpt/base/bit") +{ +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian_probe()); +#endif + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_little()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::little); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::little); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::little); +#endif + } + MPT_MAYBE_CONSTANT_IF(mpt::endian_is_big()) { + MPT_TEST_EXPECT_EQUAL(mpt::get_endian(), mpt::endian::big); + MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) { + MPT_TEST_EXPECT_EQUAL(mpt::endian::native, mpt::endian::big); + } +#if MPT_CXX_BEFORE(20) + MPT_TEST_EXPECT_EQUAL(mpt::endian_probe(), mpt::endian::big); +#endif + } + + MPT_TEST_EXPECT_EQUAL(mpt::popcount(static_cast(int32(-1))), 32); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(0u), 0); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(1u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(2u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::popcount(3u), 2); + + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(0u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(1u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(2u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(3u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(4u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(5u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(6u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(7u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(8u), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(9u), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x7fffffffu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000000u)), true); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0x80000001u)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xfffffffeu)), false); + MPT_TEST_EXPECT_EQUAL(mpt::has_single_bit(uint32(0xffffffffu)), false); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(0u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(3u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(5u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(6u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(7u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(9u), 16u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x7fffffffu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000000u)), 0x80000000u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0x80000001u)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xfffffffeu)), 0u); + //MPT_TEST_EXPECT_EQUAL(mpt::bit_ceil(uint32(0xffffffffu)), 0u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(4u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(5u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(6u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(7u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(8u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(9u), 8u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x7fffffffu)), 0x40000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000000u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0x80000001u)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xfffffffeu)), 0x80000000u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_floor(uint32(0xffffffffu)), 0x80000000u); + + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(0u), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(1u), 1u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(2u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(3u), 2u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(4u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(5u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(6u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(7u), 3u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(8u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(9u), 4u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x7fffffffu)), 31u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000000u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0x80000001u)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xfffffffeu)), 32u); + MPT_TEST_EXPECT_EQUAL(mpt::bit_width(uint32(0xffffffffu)), 32u); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111110)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111100)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11111000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11100000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b11000000)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b10000000)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000001)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000011)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00011111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00111111)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b01111111)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000001)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000011)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000111)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00001111)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00011111)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00111111)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b01111111)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111111)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111110)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111100)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11111000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11110000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11100000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b11000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b10000000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); + + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000001)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000011)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00001111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00011111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b01111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111111)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111110)), 1); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111100)), 2); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11111000)), 3); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11110000)), 4); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11100000)), 5); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b11000000)), 6); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b10000000)), 7); + MPT_TEST_EXPECT_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xffffffffu), 32); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0xfffffffeu), 31); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x80000000u), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7fffffffu), 31); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x7ffffffeu), 30); + + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000007u), 3); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000006u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000005u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000004u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000003u), 2); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000002u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000001u), 1); + MPT_TEST_EXPECT_EQUAL(mpt::lower_bound_entropy_bits(0x00000000u), 0); +} + +} // namespace bit +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BASE_BIT_HPP Property changes on: src/mpt/base/tests/tests_base_bit.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_math.hpp =================================================================== --- src/mpt/base/tests/tests_base_math.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_math.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_MATH_HPP +#define MPT_BASE_TESTS_MATH_HPP + + + +#include "mpt/base/math.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace math { + +MPT_TEST_GROUP_INLINE("mpt/base/math") +{ + MPT_TEST_EXPECT_EQUAL(mpt::round(1.99), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.5), 2.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(1.1), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.1), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.5), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-0.9), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.4), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::round(-1.7), -2.0); +} + +} // namespace math +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_MATH_HPP Property changes on: src/mpt/base/tests/tests_base_math.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_cast.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_cast.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_cast.hpp (working copy) @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_CAST_HPP +#define MPT_BASE_TESTS_SATURATE_CAST_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_cast { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +{ + // trivials + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(-1), -1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(0), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(1), 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + + // signed / unsigned + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int32)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), (int64)std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max()), (uint64)std::numeric_limits::max()); + + // overflow + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + 1), (uint16)std::numeric_limits::max() + 1); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() + int64(1)), (uint32)std::numeric_limits::max() + 1); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -128); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 127); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 255); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 32767); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), -32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(int16(-32000)), 0u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(32000)), 32000u); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(uint16(64000)), 64000u); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::saturate_cast(static_cast(std::numeric_limits::max())), std::numeric_limits::max()); +} + +} // namespace saturate_cast +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_CAST_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_cast.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_saturate_round.hpp =================================================================== --- src/mpt/base/tests/tests_base_saturate_round.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_saturate_round.hpp (working copy) @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_SATURATE_ROUND_HPP +#define MPT_BASE_TESTS_SATURATE_ROUND_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_round.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace saturate_round { + +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +{ + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.1), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() - 0.4), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() + 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::min() - 0.1), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(std::numeric_limits::max() + 0.499), std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(110.1), 110); + MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-110.1), -110); + + // These should fail to compile + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + //mpt::saturate_round(1.0); + + // This should trigger assert in Round. + //MPT_TEST_EXPECT_EQUAL(mpt::saturate_round(-129), 0); +} + +} // namespace saturate_round +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_SATURATE_ROUND_HPP Property changes on: src/mpt/base/tests/tests_base_saturate_round.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/tests/tests_base_wrapping_divide.hpp =================================================================== --- src/mpt/base/tests/tests_base_wrapping_divide.hpp (nonexistent) +++ src/mpt/base/tests/tests_base_wrapping_divide.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP +#define MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/wrapping_divide.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace base { +namespace wrapping_divide { + +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +{ + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-25, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-23, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-8, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-6, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-5, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-4, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-3, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-2, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(-1, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(1, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(2, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(3, 7), 3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(4, 7), 4); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(5, 7), 5); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(6, 7), 6); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(7, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(23, 12), 11); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(24, 12), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(25, 12), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(uint32(0x7fffffff), uint32(0x80000000)), uint32(0x7fffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0x7ffffffe), int32(0x7fffffff)), int32(0x7ffffffe)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(2)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(2)), int32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(1)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(2)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7fffffff)), int32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffe)), int32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffe)), int32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffd)), int32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(0x7ffffffd)), int32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(0x7ffffffd)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7fffffff)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7fffffff)), int32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7fffffff)), int32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), int32(0x7ffffffe)), int32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7ffffffe)), int32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7ffffffe)), int32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(2)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(2)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(1)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(2)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000001), uint32(0xffffffff)), uint32(0xbffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x40000000), uint32(0xffffffff)), uint32(0xbfffffff)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x3fffffff), uint32(0xffffffff)), uint32(0xc0000000)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000001)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000001)), uint32(2)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000001)), uint32(3)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x80000000)), uint32(1)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x80000000)), uint32(2)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7fffffff)), uint32(1)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffe)), uint32(0)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffd)), uint32(0x7ffffffa)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(0x7ffffffd)), uint32(0x7ffffffb)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(0x7ffffffd)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7fffffff)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7fffffff)), uint32(0x7ffffffe)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7fffffff)), uint32(0x7ffffffd)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(0), uint32(0x7ffffffe)), uint32(0)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7ffffffe)), uint32(0x7ffffffd)); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7ffffffe)), uint32(0x7ffffffc)); + + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-15, 7), -3); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-14, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-13, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-12, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-11, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-10, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-9, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-8, 7), -2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-7, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-6, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-5, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-4, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-3, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-2, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(-1, 7), -1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(0, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(1, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(2, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(3, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(4, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(5, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(6, 7), 0); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(7, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(8, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(9, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(10, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(11, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(12, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(13, 7), 1); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(14, 7), 2); + MPT_TEST_EXPECT_EQUAL(mpt::wrapping_divide(15, 7), 2); +} + +} // namespace wrapping_divide +} // namespace base +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/tests/tests_base_wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/utility.hpp =================================================================== --- src/mpt/base/utility.hpp (nonexistent) +++ src/mpt/base/utility.hpp (working copy) @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_UTILITY_HPP +#define MPT_BASE_UTILITY_HPP + + + +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_CXX_BEFORE(20) +#include "mpt/base/saturate_cast.hpp" +#endif + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_CXX_AT_LEAST(20) + +using std::in_range; + +#else + +// Returns true iff Tdst can represent the value val. +// Use as if(mpt::in_range(-1)). +template +constexpr bool in_range(Tsrc val) { + return (static_cast(mpt::saturate_cast(val)) == val); +} + +#endif + + +#if MPT_CXX_AT_LEAST(23) + +using std::to_underlying; + +#else + +template +constexpr std::underlying_type_t to_underlying(T value) noexcept { + return static_cast::type>(value); +} + +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_UTILITY_HPP Property changes on: src/mpt/base/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/version.hpp =================================================================== --- src/mpt/base/version.hpp (nonexistent) +++ src/mpt/base/version.hpp (working copy) @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_VERSION_HPP +#define MPT_BASE_VERSION_HPP + + + +#define MPT_VERSION_MAJOR 0 +#define MPT_VERSION_MINOR 0 +#define MPT_VERSION_PATCH 0 +#define MPT_VERSION_BUILD 0 + + + +#endif // MPT_BASE_VERSION_HPP Property changes on: src/mpt/base/version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/base/wrapping_divide.hpp =================================================================== --- src/mpt/base/wrapping_divide.hpp (nonexistent) +++ src/mpt/base/wrapping_divide.hpp (working copy) @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_WRAPPING_DIVIDE_HPP +#define MPT_BASE_WRAPPING_DIVIDE_HPP + + + +#include "mpt/base/namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Modulo with more intuitive behaviour for some contexts: +// Instead of being symmetrical around 0, the pattern for positive numbers is repeated in the negative range. +// For example, wrapping_modulo(-1, m) == (m - 1). +// Behaviour is undefined if m<=0. +template +constexpr auto wrapping_modulo(T x, M m) -> decltype(x % m) { + return (x >= 0) ? (x % m) : (m - 1 - ((-1 - x) % m)); +} + +template +constexpr auto wrapping_divide(T x, D d) -> decltype(x / d) { + return (x >= 0) ? (x / d) : (((x + 1) / d) - 1); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_WRAPPING_DIVIDE_HPP Property changes on: src/mpt/base/wrapping_divide.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64.hpp =================================================================== --- src/mpt/binary/base64.hpp (nonexistent) +++ src/mpt/binary/base64.hpp (working copy) @@ -0,0 +1,136 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64_HPP +#define MPT_BINARY_BASE64_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64_parse_error : public std::runtime_error { +public: + base64_parse_error() + : std::runtime_error("invalid Base64 encoding") { + } +}; + + +inline constexpr std::array base64 = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('+'), MPT_UCHAR('/')}}; + + +template +inline mpt::ustring encode_base64(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + result.push_back(base64[(bits >> 6) & 0x3f]); + result.push_back(base64[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + if (padding > 1) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 6) & 0x3f]); + } + if (padding > 0) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) { + if (base64[i] == c) { + return i; + } + } + throw base64_parse_error(); +} + + +inline std::vector decode_base64(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * (src.length() / 4)); + uint32 bits = 0; + std::size_t chars = 0; + std::size_t padding = 0; + for (mpt::uchar c : src) { + bits <<= 6; + if (c == MPT_UCHAR('=')) { + padding++; + } else { + bits |= decode_base64_bits(c); + } + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + if (chars != 0) { + throw base64_parse_error(); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64_HPP Property changes on: src/mpt/binary/base64.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64url.hpp =================================================================== --- src/mpt/binary/base64url.hpp (nonexistent) +++ src/mpt/binary/base64url.hpp (working copy) @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64URL_HPP +#define MPT_BINARY_BASE64URL_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64url_parse_error : public std::runtime_error { +public: + base64url_parse_error() + : std::runtime_error("invalid Base64URL encoding") { + } +}; + + +inline constexpr std::array base64url = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('-'), MPT_UCHAR('_')}}; + +template +inline mpt::ustring encode_base64url(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + result.push_back(base64url[(bits >> 6) & 0x3f]); + result.push_back(base64url[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + if (padding <= 1) { + result.push_back(base64url[(bits >> 6) & 0x3f]); + } + if (padding <= 0) { + result.push_back(base64url[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64url_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) + { + if (base64url[i] == c) + { + return i; + } + } + throw base64url_parse_error(); +} + +inline std::vector decode_base64url(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * ((src.length() + 2) / 4)); + uint32 bits = 0; + std::size_t chars = 0; + for (mpt::uchar c : src) { + bits <<= 6; + bits |= decode_base64url_bits(c); + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + bits = 0; + chars = 0; + } + } + uint32 padding = 0; + if (chars != 0 && chars < 2) { + throw base64url_parse_error(); + } + while (chars != 0) { + bits <<= 6; + padding++; + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64URL_HPP Property changes on: src/mpt/binary/base64url.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/hex.hpp =================================================================== --- src/mpt/binary/hex.hpp (nonexistent) +++ src/mpt/binary/hex.hpp (working copy) @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_HEX_HPP +#define MPT_BINARY_HEX_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline constexpr std::array encode_nibble = { + {MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), + MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), + MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('A'), MPT_UCHAR('B'), + MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F')}}; + + +inline bool decode_byte(uint8 & byte, mpt::uchar c1, mpt::uchar c2) { + byte = 0; + if (MPT_UCHAR('0') <= c1 && c1 <= MPT_UCHAR('9')) { + byte += static_cast((c1 - MPT_UCHAR('0')) << 4); + } else if (MPT_UCHAR('A') <= c1 && c1 <= MPT_UCHAR('F')) { + byte += static_cast((c1 - MPT_UCHAR('A') + 10) << 4); + } else if (MPT_UCHAR('a') <= c1 && c1 <= MPT_UCHAR('f')) { + byte += static_cast((c1 - MPT_UCHAR('a') + 10) << 4); + } else { + return false; + } + if (MPT_UCHAR('0') <= c2 && c2 <= MPT_UCHAR('9')) { + byte += static_cast(c2 - MPT_UCHAR('0')); + } else if (MPT_UCHAR('A') <= c2 && c2 <= MPT_UCHAR('F')) { + byte += static_cast(c2 - MPT_UCHAR('A') + 10); + } else if (MPT_UCHAR('a') <= c2 && c2 <= MPT_UCHAR('f')) { + byte += static_cast(c2 - MPT_UCHAR('a') + 10); + } else { + return false; + } + return true; +} + + +template +inline mpt::ustring encode_hex(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(src.size() * 2); + for (std::byte byte : src) { + result.push_back(encode_nibble[(mpt::byte_cast(byte) & 0xf0) >> 4]); + result.push_back(encode_nibble[mpt::byte_cast(byte) & 0x0f]); + } + return result; +} + +inline std::vector decode_hex(const mpt::ustring & src) { + std::vector result; + result.reserve(src.size() / 2); + for (std::size_t i = 0; (i + 1) < src.size(); i += 2) { + uint8 byte = 0; + if (!decode_byte(byte, src[i], src[i + 1])) { + return result; + } + result.push_back(mpt::byte_cast(byte)); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_HEX_HPP Property changes on: src/mpt/binary/hex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/tests/tests_binary.hpp =================================================================== --- src/mpt/binary/tests/tests_binary.hpp (nonexistent) +++ src/mpt/binary/tests/tests_binary.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BINARY_HPP +#define MPT_BASE_TESTS_BINARY_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace binary { + +MPT_TEST_GROUP_INLINE("mpt/binary") +{ + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4=")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg==")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("bGVhc3VyZS4="))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("ZWFzdXJlLg=="))); + } + + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("bGVhc3VyZS4"))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("ZWFzdXJlLg"))); + } +} + +} // namespace binary +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BINARY_HPP Property changes on: src/mpt/binary/tests/tests_binary.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64.hpp =================================================================== --- src/mpt/binary/base64.hpp (nonexistent) +++ src/mpt/binary/base64.hpp (working copy) @@ -0,0 +1,136 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64_HPP +#define MPT_BINARY_BASE64_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64_parse_error : public std::runtime_error { +public: + base64_parse_error() + : std::runtime_error("invalid Base64 encoding") { + } +}; + + +inline constexpr std::array base64 = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('+'), MPT_UCHAR('/')}}; + + +template +inline mpt::ustring encode_base64(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + result.push_back(base64[(bits >> 6) & 0x3f]); + result.push_back(base64[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64[(bits >> 18) & 0x3f]); + result.push_back(base64[(bits >> 12) & 0x3f]); + if (padding > 1) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 6) & 0x3f]); + } + if (padding > 0) { + result.push_back(MPT_UCHAR('=')); + } else { + result.push_back(base64[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) { + if (base64[i] == c) { + return i; + } + } + throw base64_parse_error(); +} + + +inline std::vector decode_base64(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * (src.length() / 4)); + uint32 bits = 0; + std::size_t chars = 0; + std::size_t padding = 0; + for (mpt::uchar c : src) { + bits <<= 6; + if (c == MPT_UCHAR('=')) { + padding++; + } else { + bits |= decode_base64_bits(c); + } + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + if (chars != 0) { + throw base64_parse_error(); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64_HPP Property changes on: src/mpt/binary/base64.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/base64url.hpp =================================================================== --- src/mpt/binary/base64url.hpp (nonexistent) +++ src/mpt/binary/base64url.hpp (working copy) @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_BASE64URL_HPP +#define MPT_BINARY_BASE64URL_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class base64url_parse_error : public std::runtime_error { +public: + base64url_parse_error() + : std::runtime_error("invalid Base64URL encoding") { + } +}; + + +inline constexpr std::array base64url = { + {MPT_UCHAR('A'), MPT_UCHAR('B'), MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F'), MPT_UCHAR('G'), MPT_UCHAR('H'), MPT_UCHAR('I'), MPT_UCHAR('J'), MPT_UCHAR('K'), MPT_UCHAR('L'), MPT_UCHAR('M'), MPT_UCHAR('N'), MPT_UCHAR('O'), MPT_UCHAR('P'), + MPT_UCHAR('Q'), MPT_UCHAR('R'), MPT_UCHAR('S'), MPT_UCHAR('T'), MPT_UCHAR('U'), MPT_UCHAR('V'), MPT_UCHAR('W'), MPT_UCHAR('X'), MPT_UCHAR('Y'), MPT_UCHAR('Z'), MPT_UCHAR('a'), MPT_UCHAR('b'), MPT_UCHAR('c'), MPT_UCHAR('d'), MPT_UCHAR('e'), MPT_UCHAR('f'), + MPT_UCHAR('g'), MPT_UCHAR('h'), MPT_UCHAR('i'), MPT_UCHAR('j'), MPT_UCHAR('k'), MPT_UCHAR('l'), MPT_UCHAR('m'), MPT_UCHAR('n'), MPT_UCHAR('o'), MPT_UCHAR('p'), MPT_UCHAR('q'), MPT_UCHAR('r'), MPT_UCHAR('s'), MPT_UCHAR('t'), MPT_UCHAR('u'), MPT_UCHAR('v'), + MPT_UCHAR('w'), MPT_UCHAR('x'), MPT_UCHAR('y'), MPT_UCHAR('z'), MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('-'), MPT_UCHAR('_')}}; + +template +inline mpt::ustring encode_base64url(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(4 * ((src.size() + 2) / 3)); + uint32 bits = 0; + std::size_t bytes = 0; + for (std::byte byte : src) { + bits <<= 8; + bits |= mpt::byte_cast(byte); + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + result.push_back(base64url[(bits >> 6) & 0x3f]); + result.push_back(base64url[(bits >> 0) & 0x3f]); + bits = 0; + bytes = 0; + } + } + std::size_t padding = 0; + while (bytes != 0) { + bits <<= 8; + padding++; + bytes++; + if (bytes == 3) { + result.push_back(base64url[(bits >> 18) & 0x3f]); + result.push_back(base64url[(bits >> 12) & 0x3f]); + if (padding <= 1) { + result.push_back(base64url[(bits >> 6) & 0x3f]); + } + if (padding <= 0) { + result.push_back(base64url[(bits >> 0) & 0x3f]); + } + bits = 0; + bytes = 0; + } + } + return result; +} + +inline uint8 decode_base64url_bits(mpt::uchar c) { + for (uint8 i = 0; i < 64; ++i) + { + if (base64url[i] == c) + { + return i; + } + } + throw base64url_parse_error(); +} + +inline std::vector decode_base64url(const mpt::ustring & src) { + std::vector result; + result.reserve(3 * ((src.length() + 2) / 4)); + uint32 bits = 0; + std::size_t chars = 0; + for (mpt::uchar c : src) { + bits <<= 6; + bits |= decode_base64url_bits(c); + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + bits = 0; + chars = 0; + } + } + uint32 padding = 0; + if (chars != 0 && chars < 2) { + throw base64url_parse_error(); + } + while (chars != 0) { + bits <<= 6; + padding++; + chars++; + if (chars == 4) { + result.push_back(mpt::byte_cast(static_cast((bits >> 16) & 0xff))); + if (padding < 2) { + result.push_back(mpt::byte_cast(static_cast((bits >> 8) & 0xff))); + } + if (padding < 1) { + result.push_back(mpt::byte_cast(static_cast((bits >> 0) & 0xff))); + } + bits = 0; + chars = 0; + padding = 0; + } + } + return result; +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_BASE64URL_HPP Property changes on: src/mpt/binary/base64url.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/hex.hpp =================================================================== --- src/mpt/binary/hex.hpp (nonexistent) +++ src/mpt/binary/hex.hpp (working copy) @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BINARY_HEX_HPP +#define MPT_BINARY_HEX_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline constexpr std::array encode_nibble = { + {MPT_UCHAR('0'), MPT_UCHAR('1'), MPT_UCHAR('2'), MPT_UCHAR('3'), + MPT_UCHAR('4'), MPT_UCHAR('5'), MPT_UCHAR('6'), MPT_UCHAR('7'), + MPT_UCHAR('8'), MPT_UCHAR('9'), MPT_UCHAR('A'), MPT_UCHAR('B'), + MPT_UCHAR('C'), MPT_UCHAR('D'), MPT_UCHAR('E'), MPT_UCHAR('F')}}; + + +inline bool decode_byte(uint8 & byte, mpt::uchar c1, mpt::uchar c2) { + byte = 0; + if (MPT_UCHAR('0') <= c1 && c1 <= MPT_UCHAR('9')) { + byte += static_cast((c1 - MPT_UCHAR('0')) << 4); + } else if (MPT_UCHAR('A') <= c1 && c1 <= MPT_UCHAR('F')) { + byte += static_cast((c1 - MPT_UCHAR('A') + 10) << 4); + } else if (MPT_UCHAR('a') <= c1 && c1 <= MPT_UCHAR('f')) { + byte += static_cast((c1 - MPT_UCHAR('a') + 10) << 4); + } else { + return false; + } + if (MPT_UCHAR('0') <= c2 && c2 <= MPT_UCHAR('9')) { + byte += static_cast(c2 - MPT_UCHAR('0')); + } else if (MPT_UCHAR('A') <= c2 && c2 <= MPT_UCHAR('F')) { + byte += static_cast(c2 - MPT_UCHAR('A') + 10); + } else if (MPT_UCHAR('a') <= c2 && c2 <= MPT_UCHAR('f')) { + byte += static_cast(c2 - MPT_UCHAR('a') + 10); + } else { + return false; + } + return true; +} + + +template +inline mpt::ustring encode_hex(mpt::span src_) { + mpt::const_byte_span src = mpt::byte_cast(src_); + mpt::ustring result; + result.reserve(src.size() * 2); + for (std::byte byte : src) { + result.push_back(encode_nibble[(mpt::byte_cast(byte) & 0xf0) >> 4]); + result.push_back(encode_nibble[mpt::byte_cast(byte) & 0x0f]); + } + return result; +} + +inline std::vector decode_hex(const mpt::ustring & src) { + std::vector result; + result.reserve(src.size() / 2); + for (std::size_t i = 0; (i + 1) < src.size(); i += 2) { + uint8 byte = 0; + if (!decode_byte(byte, src[i], src[i + 1])) { + return result; + } + result.push_back(mpt::byte_cast(byte)); + } + return result; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BINARY_HEX_HPP Property changes on: src/mpt/binary/hex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/tests/tests_binary.hpp =================================================================== --- src/mpt/binary/tests/tests_binary.hpp (nonexistent) +++ src/mpt/binary/tests/tests_binary.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BINARY_HPP +#define MPT_BASE_TESTS_BINARY_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace binary { + +MPT_TEST_GROUP_INLINE("mpt/binary") +{ + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4=")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg==")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("bGVhc3VyZS4="))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("ZWFzdXJlLg=="))); + } + + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("bGVhc3VyZS4"))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("ZWFzdXJlLg"))); + } +} + +} // namespace binary +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BINARY_HPP Property changes on: src/mpt/binary/tests/tests_binary.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/binary/tests/tests_binary.hpp =================================================================== --- src/mpt/binary/tests/tests_binary.hpp (nonexistent) +++ src/mpt/binary/tests/tests_binary.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_BINARY_HPP +#define MPT_BASE_TESTS_BINARY_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace binary { + +MPT_TEST_GROUP_INLINE("mpt/binary") +{ + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4=")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg==")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("bGVhc3VyZS4="))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64(MPT_USTRING("ZWFzdXJlLg=="))); + } + + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("cGxlYXN1cmUu")); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("bGVhc3VyZS4")); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(mpt::encode_base64url(mpt::as_span(expected)), MPT_USTRING("ZWFzdXJlLg")); + } + { + std::string expecteds = std::string("pleasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("cGxlYXN1cmUu"))); + } + { + std::string expecteds = std::string("leasure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("bGVhc3VyZS4"))); + } + { + std::string expecteds = std::string("easure."); + std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); + MPT_TEST_EXPECT_EQUAL(expected, mpt::decode_base64url(MPT_USTRING("ZWFzdXJlLg"))); + } +} + +} // namespace binary +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_BINARY_HPP Property changes on: src/mpt/binary/tests/tests_binary.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/libc.hpp =================================================================== --- src/mpt/check/libc.hpp (nonexistent) +++ src/mpt/check/libc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_LIBC_HPP +#define MPT_CHECK_LIBC_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#ifndef __STDC_CONSTANT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_CONSTANT_MACROS +MPT_WARNING("C stdlib does not provide constant macros. Please #define __STDC_CONSTANT_MACROS.") +#endif +#endif + +#ifndef __STDC_FORMAT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_FORMAT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_FORMAT_MACROS.") +#endif +#endif + +#ifndef __STDC_LIMIT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_LIMIT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_LIMIT_MACROS.") +#endif +#endif + +#ifndef _USE_MATH_DEFINES +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_USE_MATH_DEFINES +MPT_WARNING("C stdlib does not provide math constants. Please #define _USE_MATH_DEFINES.") +#endif +#endif + +#if !MPT_LIBC_MS +#if !defined(_FILE_OFFSET_BITS) +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_FILE_OFFSET_BITS +MPT_WARNING("C stdlib may not provide 64bit std::FILE access. Please #define _FILE_OFFSET_BITS=64.") +#endif +#endif +#endif + +#endif // MPT_CHECK_LIBC_HPP Property changes on: src/mpt/check/libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/mfc.hpp =================================================================== --- src/mpt/check/mfc.hpp (nonexistent) +++ src/mpt/check/mfc.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_MFC_HPP +#define MPT_CHECK_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" +#include "mpt/detect/mfc.hpp" + +#if MPT_DETECTED_MFC + +#ifndef _CSTRING_DISABLE_NARROW_WIDE_CONVERSION +#ifndef MPT_CHECK_MFC_IGNORE_WARNING_NO_CSTRING_DISABLE_NARROW_WIDE_CONVERSION +MPT_WARNING("MFC uses CString with automatic encoding conversions. Please #define _CSTRING_DISABLE_NARROW_WIDE_CONVERSION.") +#endif +#endif + +#endif // MPT_DETECTED_MFC + +#endif // MPT_CHECK_MFC_HPP Property changes on: src/mpt/check/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/windows.hpp =================================================================== --- src/mpt/check/windows.hpp (nonexistent) +++ src/mpt/check/windows.hpp (working copy) @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_WINDOWS_HPP +#define MPT_CHECK_WINDOWS_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#if MPT_OS_WINDOWS + +#ifndef UNICODE +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_UNICODE +MPT_WARNING("windows.h uses MBCS TCHAR. Please #define UNICODE.") +#endif +#endif + +#ifndef NOMINMAX +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_NOMINMAX +MPT_WARNING("windows.h defines min and max which conflicts with C++. Please #define NOMINMAX.") +#endif +#endif + +#endif // MPT_OS_WINDOWS + +#endif // MPT_CHECK_WINDOWS_HPP Property changes on: src/mpt/check/windows.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/libc.hpp =================================================================== --- src/mpt/check/libc.hpp (nonexistent) +++ src/mpt/check/libc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_LIBC_HPP +#define MPT_CHECK_LIBC_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#ifndef __STDC_CONSTANT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_CONSTANT_MACROS +MPT_WARNING("C stdlib does not provide constant macros. Please #define __STDC_CONSTANT_MACROS.") +#endif +#endif + +#ifndef __STDC_FORMAT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_FORMAT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_FORMAT_MACROS.") +#endif +#endif + +#ifndef __STDC_LIMIT_MACROS +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_STDC_LIMIT_MACROS +MPT_WARNING("C stdlib does not provide limit macros. Please #define __STDC_LIMIT_MACROS.") +#endif +#endif + +#ifndef _USE_MATH_DEFINES +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_USE_MATH_DEFINES +MPT_WARNING("C stdlib does not provide math constants. Please #define _USE_MATH_DEFINES.") +#endif +#endif + +#if !MPT_LIBC_MS +#if !defined(_FILE_OFFSET_BITS) +#ifndef MPT_CHECK_LIBC_IGNORE_WARNING_NO_FILE_OFFSET_BITS +MPT_WARNING("C stdlib may not provide 64bit std::FILE access. Please #define _FILE_OFFSET_BITS=64.") +#endif +#endif +#endif + +#endif // MPT_CHECK_LIBC_HPP Property changes on: src/mpt/check/libc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/mfc.hpp =================================================================== --- src/mpt/check/mfc.hpp (nonexistent) +++ src/mpt/check/mfc.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_MFC_HPP +#define MPT_CHECK_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" +#include "mpt/detect/mfc.hpp" + +#if MPT_DETECTED_MFC + +#ifndef _CSTRING_DISABLE_NARROW_WIDE_CONVERSION +#ifndef MPT_CHECK_MFC_IGNORE_WARNING_NO_CSTRING_DISABLE_NARROW_WIDE_CONVERSION +MPT_WARNING("MFC uses CString with automatic encoding conversions. Please #define _CSTRING_DISABLE_NARROW_WIDE_CONVERSION.") +#endif +#endif + +#endif // MPT_DETECTED_MFC + +#endif // MPT_CHECK_MFC_HPP Property changes on: src/mpt/check/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/check/windows.hpp =================================================================== --- src/mpt/check/windows.hpp (nonexistent) +++ src/mpt/check/windows.hpp (working copy) @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CHECK_WINDOWS_HPP +#define MPT_CHECK_WINDOWS_HPP + +#include "mpt/base/detect_os.hpp" +#include "mpt/base/compiletime_warning.hpp" + +#if MPT_OS_WINDOWS + +#ifndef UNICODE +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_UNICODE +MPT_WARNING("windows.h uses MBCS TCHAR. Please #define UNICODE.") +#endif +#endif + +#ifndef NOMINMAX +#ifndef MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_NOMINMAX +MPT_WARNING("windows.h defines min and max which conflicts with C++. Please #define NOMINMAX.") +#endif +#endif + +#endif // MPT_OS_WINDOWS + +#endif // MPT_CHECK_WINDOWS_HPP Property changes on: src/mpt/check/windows.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/crc.hpp =================================================================== --- src/mpt/crc/crc.hpp (nonexistent) +++ src/mpt/crc/crc.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRC_CRC_HPP +#define MPT_CRC_CRC_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class crc { + +public: + using self_type = crc; + using value_type = T; + using byte_type = uint8; + + static constexpr std::size_t size_bytes = sizeof(value_type); + static constexpr std::size_t size_bits = sizeof(value_type) * 8; + static constexpr value_type top_bit = static_cast(1) << ((sizeof(value_type) * 8) - 1); + +private: + template + static constexpr Tint reverse(Tint value) noexcept { + const std::size_t bits = sizeof(Tint) * 8; + Tint result = 0; + for (std::size_t i = 0; i < bits; ++i) { + result <<= 1; + result |= static_cast(value & 0x1); + value >>= 1; + } + return result; + } + + static constexpr value_type calculate_table_entry(byte_type pos) noexcept { + value_type value = 0; + value = (static_cast(reverseData ? reverse(pos) : pos) << (size_bits - 8)); + for (std::size_t bit = 0; bit < 8; ++bit) { + if (value & top_bit) { + value = (value << 1) ^ polynomial; + } else { + value = (value << 1); + } + } + value = (reverseData ? reverse(value) : value); + return value; + } + +private: + static constexpr std::array calculate_table() noexcept { + std::array t = mpt::init_array(value_type{}); + for (std::size_t i = 0; i < 256; ++i) { + t[i] = calculate_table_entry(static_cast(i)); + } + return t; + } + + static constexpr std::array table = calculate_table(); + +private: + constexpr value_type read_table(byte_type pos) const noexcept { + return table[pos]; + } + +private: + value_type value; + +public: + constexpr crc() noexcept + : value(initial) { + return; + } + + constexpr void processByte(byte_type byte) noexcept { + if constexpr (reverseData) { + value = (value >> 8) ^ read_table(static_cast((value & 0xff) ^ byte)); + } else { + value = (value << 8) ^ read_table(static_cast(((value >> (size_bits - 8)) & 0xff) ^ byte)); + } + } + + constexpr value_type result() const noexcept { + return (value ^ resultXOR); + } + +public: + constexpr operator value_type() const noexcept { + return result(); + } + + inline crc & process(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & process(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + inline crc & process(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + return *this; + } + + template + inline crc & process(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + inline crc & operator()(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & operator()(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + crc & operator()(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + operator()(*it); + } + return *this; + } + + template + inline crc & operator()(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + template + crc(InputIt beg, InputIt end) + : value(initial) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + } + + template + inline crc(const Container & data) + : value(initial) { + process(data.begin(), data.end()); + } +}; + +using crc16 = crc; +using crc32 = crc; +using crc32_ogg = crc; +using crc32c = crc; +using crc64_jones = crc; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRC_CRC_HPP Property changes on: src/mpt/crc/crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/tests/tests_crc.hpp =================================================================== --- src/mpt/crc/tests/tests_crc.hpp (nonexistent) +++ src/mpt/crc/tests/tests_crc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRC_HPP +#define MPT_BASE_TESTS_CRC_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crc { + +MPT_TEST_GROUP_INLINE("mpt/crc") +{ + MPT_TEST_EXPECT_EQUAL(mpt::crc32(std::string("123456789")), 0xCBF43926u); + MPT_TEST_EXPECT_EQUAL(mpt::crc32_ogg(std::string("123456789")), 0x89a1897fu); +} + +} // namespace crc +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRC_HPP Property changes on: src/mpt/crc/tests/tests_crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/crc.hpp =================================================================== --- src/mpt/crc/crc.hpp (nonexistent) +++ src/mpt/crc/crc.hpp (working copy) @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRC_CRC_HPP +#define MPT_CRC_CRC_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class crc { + +public: + using self_type = crc; + using value_type = T; + using byte_type = uint8; + + static constexpr std::size_t size_bytes = sizeof(value_type); + static constexpr std::size_t size_bits = sizeof(value_type) * 8; + static constexpr value_type top_bit = static_cast(1) << ((sizeof(value_type) * 8) - 1); + +private: + template + static constexpr Tint reverse(Tint value) noexcept { + const std::size_t bits = sizeof(Tint) * 8; + Tint result = 0; + for (std::size_t i = 0; i < bits; ++i) { + result <<= 1; + result |= static_cast(value & 0x1); + value >>= 1; + } + return result; + } + + static constexpr value_type calculate_table_entry(byte_type pos) noexcept { + value_type value = 0; + value = (static_cast(reverseData ? reverse(pos) : pos) << (size_bits - 8)); + for (std::size_t bit = 0; bit < 8; ++bit) { + if (value & top_bit) { + value = (value << 1) ^ polynomial; + } else { + value = (value << 1); + } + } + value = (reverseData ? reverse(value) : value); + return value; + } + +private: + static constexpr std::array calculate_table() noexcept { + std::array t = mpt::init_array(value_type{}); + for (std::size_t i = 0; i < 256; ++i) { + t[i] = calculate_table_entry(static_cast(i)); + } + return t; + } + + static constexpr std::array table = calculate_table(); + +private: + constexpr value_type read_table(byte_type pos) const noexcept { + return table[pos]; + } + +private: + value_type value; + +public: + constexpr crc() noexcept + : value(initial) { + return; + } + + constexpr void processByte(byte_type byte) noexcept { + if constexpr (reverseData) { + value = (value >> 8) ^ read_table(static_cast((value & 0xff) ^ byte)); + } else { + value = (value << 8) ^ read_table(static_cast(((value >> (size_bits - 8)) & 0xff) ^ byte)); + } + } + + constexpr value_type result() const noexcept { + return (value ^ resultXOR); + } + +public: + constexpr operator value_type() const noexcept { + return result(); + } + + inline crc & process(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & process(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & process(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + inline crc & process(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + return *this; + } + + template + inline crc & process(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + inline crc & operator()(char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(signed char c) noexcept { + processByte(static_cast(c)); + return *this; + } + + inline crc & operator()(unsigned char c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + inline crc & operator()(std::byte c) noexcept { + processByte(mpt::byte_cast(c)); + return *this; + } + + template + crc & operator()(InputIt beg, InputIt end) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + operator()(*it); + } + return *this; + } + + template + inline crc & operator()(const Container & data) { + operator()(data.begin(), data.end()); + return *this; + } + + template + crc(InputIt beg, InputIt end) + : value(initial) { + for (InputIt it = beg; it != end; ++it) { + static_assert(sizeof(*it) == 1, "1 byte type required"); + process(*it); + } + } + + template + inline crc(const Container & data) + : value(initial) { + process(data.begin(), data.end()); + } +}; + +using crc16 = crc; +using crc32 = crc; +using crc32_ogg = crc; +using crc32c = crc; +using crc64_jones = crc; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRC_CRC_HPP Property changes on: src/mpt/crc/crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/tests/tests_crc.hpp =================================================================== --- src/mpt/crc/tests/tests_crc.hpp (nonexistent) +++ src/mpt/crc/tests/tests_crc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRC_HPP +#define MPT_BASE_TESTS_CRC_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crc { + +MPT_TEST_GROUP_INLINE("mpt/crc") +{ + MPT_TEST_EXPECT_EQUAL(mpt::crc32(std::string("123456789")), 0xCBF43926u); + MPT_TEST_EXPECT_EQUAL(mpt::crc32_ogg(std::string("123456789")), 0x89a1897fu); +} + +} // namespace crc +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRC_HPP Property changes on: src/mpt/crc/tests/tests_crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crc/tests/tests_crc.hpp =================================================================== --- src/mpt/crc/tests/tests_crc.hpp (nonexistent) +++ src/mpt/crc/tests/tests_crc.hpp (working copy) @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRC_HPP +#define MPT_BASE_TESTS_CRC_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crc { + +MPT_TEST_GROUP_INLINE("mpt/crc") +{ + MPT_TEST_EXPECT_EQUAL(mpt::crc32(std::string("123456789")), 0xCBF43926u); + MPT_TEST_EXPECT_EQUAL(mpt::crc32_ogg(std::string("123456789")), 0x89a1897fu); +} + +} // namespace crc +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRC_HPP Property changes on: src/mpt/crc/tests/tests_crc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/exception.hpp =================================================================== --- src/mpt/crypto/exception.hpp (nonexistent) +++ src/mpt/crypto/exception.hpp (working copy) @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_EXCEPTION_HPP +#define MPT_CRYPTO_EXCEPTION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + +class exception + : public std::runtime_error { +private: + NTSTATUS m_Status; + +public: + exception(NTSTATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + NTSTATUS code() const noexcept { + return m_Status; + } +}; + + +class security_exception + : public std::runtime_error { +private: + SECURITY_STATUS m_Status; + +public: + security_exception(SECURITY_STATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + SECURITY_STATUS code() const noexcept { + return m_Status; + } +}; + + +inline void CheckNTSTATUS(NTSTATUS status) { + if (status >= 0) { + return; + } else if (status == STATUS_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw exception(status); + } +} + + +inline void CheckSECURITY_STATUS(SECURITY_STATUS status) { + if (status == ERROR_SUCCESS) { + return; + } else if (status == NTE_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw security_exception(status); + } +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_EXCEPTION_HPP Property changes on: src/mpt/crypto/exception.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/hash.hpp =================================================================== --- src/mpt/crypto/hash.hpp (nonexistent) +++ src/mpt/crypto/hash.hpp (working copy) @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_HASH_HPP +#define MPT_CRYPTO_HASH_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/crypto/exception.hpp" + +#include +#include + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + + +namespace hash { + + +struct hash_traits_md5 { + static constexpr std::size_t output_bits = 128; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_MD5_ALGORITHM; +}; + +struct hash_traits_sha1 { + static constexpr std::size_t output_bits = 160; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA1_ALGORITHM; +}; + +struct hash_traits_sha256 { + static constexpr std::size_t output_bits = 256; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA256_ALGORITHM; +}; + +struct hash_traits_sha512 { + static constexpr std::size_t output_bits = 512; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA512_ALGORITHM; +}; + +template +class hash_impl { + +public: + using traits = Traits; + + using result_type = std::array; + +private: + BCRYPT_ALG_HANDLE hAlg = NULL; + std::vector hashState; + std::vector hashResult; + BCRYPT_HASH_HANDLE hHash = NULL; + +private: + void init() { + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hAlg, traits::bcrypt_name, NULL, 0)); + if (!hAlg) { + throw exception(0); + } + DWORD hashStateSize = 0; + DWORD hashStateSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&hashStateSize, sizeof(DWORD), &hashStateSizeSize, 0)); + if (hashStateSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashStateSize <= 0) { + throw exception(0); + } + hashState.resize(hashStateSize); + DWORD hashResultSize = 0; + DWORD hashResultSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&hashResultSize, sizeof(DWORD), &hashResultSizeSize, 0)); + if (hashResultSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashResultSize <= 0) { + throw exception(0); + } + if (hashResultSize != mpt::extent()) { + throw exception(0); + } + hashResult.resize(hashResultSize); + CheckNTSTATUS(BCryptCreateHash(hAlg, &hHash, hashState.data(), hashStateSize, NULL, 0, 0)); + if (!hHash) { + throw exception(0); + } + } + + void cleanup() { + if (hHash) { + BCryptDestroyHash(hHash); + hHash = NULL; + } + hashResult.resize(0); + hashResult.shrink_to_fit(); + hashState.resize(0); + hashState.shrink_to_fit(); + if (hAlg) { + BCryptCloseAlgorithmProvider(hAlg, 0); + hAlg = NULL; + } + } + +public: + hash_impl() { + try { + init(); + } catch (...) { + cleanup(); + throw; + } + } + hash_impl(const hash_impl &) = delete; + hash_impl & operator=(const hash_impl &) = delete; + ~hash_impl() { + cleanup(); + } + +public: + hash_impl & process(mpt::const_byte_span data) { + CheckNTSTATUS(BCryptHashData(hHash, const_cast(mpt::byte_cast(data.data())), mpt::saturate_cast(data.size()), 0)); + return *this; + } + + result_type result() { + result_type res = mpt::init_array(std::byte{0}); + CheckNTSTATUS(BCryptFinishHash(hHash, hashResult.data(), mpt::saturate_cast(hashResult.size()), 0)); + assert(hashResult.size() == mpt::extent()); + std::transform(hashResult.begin(), hashResult.end(), res.begin(), [](BYTE b) { return mpt::as_byte(b); }); + return res; + } +}; + +using MD5 = hash_impl; +using SHA1 = hash_impl; +using SHA256 = hash_impl; +using SHA512 = hash_impl; + + +} // namespace hash + + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_HASH_HPP Property changes on: src/mpt/crypto/hash.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/jwk.hpp =================================================================== --- src/mpt/crypto/jwk.hpp (nonexistent) +++ src/mpt/crypto/jwk.hpp (working copy) @@ -0,0 +1,532 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_JWK_HPP +#define MPT_CRYPTO_JWK_HPP + + + +#include "mpt/base/alloc.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/json/json.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace crypto { + + + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +class keystore { +public: + enum class domain + { + system = 1, + user = 2, + }; + +private: + NCRYPT_PROV_HANDLE hProv = NULL; + domain ProvDomain = domain::user; + +private: + void cleanup() { + if (hProv) { + NCryptFreeObject(hProv); + hProv = NULL; + } + } + +public: + keystore(domain d) + : ProvDomain(d) { + try { + CheckSECURITY_STATUS(NCryptOpenStorageProvider(&hProv, MS_KEY_STORAGE_PROVIDER, 0)); + } catch (...) { + cleanup(); + throw; + } + } + ~keystore() { + return; + } + operator NCRYPT_PROV_HANDLE() { + return hProv; + } + keystore::domain store_domain() const { + return ProvDomain; + } +}; + + + +namespace asymmetric { + + + +class signature_verification_failed + : public std::runtime_error { +public: + signature_verification_failed() + : std::runtime_error("Signature Verification failed.") { + return; + } +}; + + + +inline std::vector jws_get_keynames(const mpt::ustring & jws_) { + std::vector result; + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + for (const auto & s : jws["signatures"]) { + result.push_back(s["header"]["kid"]); + } + return result; +} + + + +struct RSASSA_PSS_SHA512_traits { + using hash_type = mpt::crypto::hash::SHA512; + static constexpr const char * jwk_alg = "PS512"; +}; + + + +template +class rsassa_pss { + +public: + using hash_type = typename Traits::hash_type; + static constexpr const char * jwk_alg = Traits::jwk_alg; + + struct public_key_data { + + mpt::ustring name; + uint32 length = 0; + std::vector public_exp; + std::vector modulus; + + std::vector as_cng_blob() const { + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + rsakey_blob.Magic = BCRYPT_RSAPUBLIC_MAGIC; + rsakey_blob.BitLength = length; + rsakey_blob.cbPublicExp = mpt::saturate_cast(public_exp.size()); + rsakey_blob.cbModulus = mpt::saturate_cast(modulus.size()); + std::vector result(sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size() + modulus.size()); + std::memcpy(result.data(), &rsakey_blob, sizeof(BCRYPT_RSAKEY_BLOB)); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB), public_exp.data(), public_exp.size()); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size(), modulus.data(), modulus.size()); + return result; + } + + mpt::ustring as_jwk() const { + nlohmann::json json = nlohmann::json::object(); + json["kid"] = name; + json["kty"] = "RSA"; + json["alg"] = jwk_alg; + json["use"] = "sig"; + json["e"] = mpt::encode_base64url(mpt::as_span(public_exp)); + json["n"] = mpt::encode_base64url(mpt::as_span(modulus)); + return mpt::convert(mpt::common_encoding::utf8, json.dump()); + } + + static public_key_data from_jwk(const mpt::ustring & jwk) { + public_key_data result; + try { + nlohmann::json json = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk)); + if (json["kty"] != "RSA") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["alg"] != jwk_alg) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["use"] != "sig") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + result.name = json["kid"].get(); + result.public_exp = mpt::decode_base64url(json["e"]); + result.modulus = mpt::decode_base64url(json["n"]); + result.length = mpt::saturate_cast(result.modulus.size() * 8); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (...) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + return result; + } + + static public_key_data from_cng_blob(const mpt::ustring & name, const std::vector & blob) { + public_key_data result; + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + if (blob.size() < sizeof(BCRYPT_RSAKEY_BLOB)) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + std::memcpy(&rsakey_blob, blob.data(), sizeof(BCRYPT_RSAKEY_BLOB)); + if (rsakey_blob.Magic != BCRYPT_RSAPUBLIC_MAGIC) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + if (blob.size() != sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + result.name = name; + result.length = rsakey_blob.BitLength; + result.public_exp = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB), blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp); + result.modulus = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp, blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus); + return result; + } + }; + + + + static std::vector parse_jwk_set(const mpt::ustring & jwk_set_) { + std::vector result; + nlohmann::json jwk_set = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk_set_)); + for (const auto & k : jwk_set["keys"]) { + try { + result.push_back(public_key_data::from_jwk(mpt::convert(mpt::common_encoding::utf8, k.dump()))); + } catch (...) { + // nothing + } + } + return result; + } + + + + class public_key { + + private: + mpt::ustring name; + BCRYPT_ALG_HANDLE hSignAlg = NULL; + BCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + BCryptDestroyKey(hKey); + hKey = NULL; + } + if (hSignAlg) { + BCryptCloseAlgorithmProvider(hSignAlg, 0); + hSignAlg = NULL; + } + } + + public: + public_key(const public_key_data & data) { + try { + name = data.name; + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0)); + std::vector blob = data.as_cng_blob(); + CheckNTSTATUS(BCryptImportKeyPair(hSignAlg, NULL, BCRYPT_RSAPUBLIC_BLOB, &hKey, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), 0)); + } catch (...) { + cleanup(); + throw; + } + } + + public_key(const public_key & other) + : public_key(other.get_public_key_data()) { + return; + } + + public_key & operator=(const public_key & other) { + if (&other == this) { + return *this; + } + public_key copy(other); + { + using std::swap; + swap(copy.name, name); + swap(copy.hSignAlg, hSignAlg); + swap(copy.hKey, hKey); + } + return *this; + } + + ~public_key() { + cleanup(); + } + + mpt::ustring get_name() const { + return name; + } + + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + void verify_hash(typename hash_type::result_type hash, std::vector signature) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + NTSTATUS result = BCryptVerifySignature(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(signature.data()), mpt::saturate_cast(signature.size()), BCRYPT_PAD_PSS); + if (result == 0x00000000 /*STATUS_SUCCESS*/) { + return; + } + if (result == 0xC000A000 /*STATUS_INVALID_SIGNATURE*/) { + throw signature_verification_failed(); + } + CheckNTSTATUS(result); + throw signature_verification_failed(); + } + + void verify(mpt::const_byte_span payload, const std::vector & signature) { + verify_hash(hash_type().process(payload).result(), signature); + } + + std::vector jws_verify(const mpt::ustring & jws_) { + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + std::vector payload = mpt::decode_base64url(jws["payload"]); + nlohmann::json jsignature = nlohmann::json::object(); + bool sigfound = false; + for (const auto & s : jws["signatures"]) { + if (s["header"]["kid"] == mpt::convert(mpt::common_encoding::utf8, name)) { + jsignature = s; + sigfound = true; + } + } + if (!sigfound) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(jsignature["protected"]); + std::vector signature = mpt::decode_base64url(jsignature["signature"]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + + std::vector jws_compact_verify(const mpt::ustring & jws) { + std::vector parts = mpt::split(jws, MPT_USTRING(".")); + if (parts.size() != 3) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(parts[0]); + std::vector payload = mpt::decode_base64url(parts[1]); + std::vector signature = mpt::decode_base64url(parts[2]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + }; + + + + static inline void jws_verify_at_least_one(std::vector & keys, const std::vector & expectedPayload, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + bool sigchecked = false; + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + if (expectedPayload != key.jws_verify(signature)) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + sigchecked = true; + } + } + } + if (!sigchecked) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + } + + + + static inline std::vector jws_verify_at_least_one(std::vector & keys, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + return key.jws_verify(signature); + } + } + } + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + + + + class managed_private_key { + + private: + mpt::ustring name; + NCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + NCryptFreeObject(hKey); + hKey = NULL; + } + } + + public: + managed_private_key() = delete; + + managed_private_key(const managed_private_key &) = delete; + + managed_private_key & operator=(const managed_private_key &) = delete; + + managed_private_key(keystore & keystore) { + try { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, NULL, 0, 0)); + } catch (...) { + cleanup(); + throw; + } + } + + managed_private_key(keystore & keystore, const mpt::ustring & name_) + : name(name_) { + try { + SECURITY_STATUS openKeyStatus = NCryptOpenKey(keystore, &hKey, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0)); + if (openKeyStatus == NTE_BAD_KEYSET) { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0))); + DWORD length = mpt::saturate_cast(keysize); + CheckSECURITY_STATUS(NCryptSetProperty(hKey, NCRYPT_LENGTH_PROPERTY, (PBYTE)&length, mpt::saturate_cast(sizeof(DWORD)), 0)); + CheckSECURITY_STATUS(NCryptFinalizeKey(hKey, 0)); + } else { + CheckSECURITY_STATUS(openKeyStatus); + } + } catch (...) { + cleanup(); + throw; + } + } + + ~managed_private_key() { + cleanup(); + } + + void destroy() { + CheckSECURITY_STATUS(NCryptDeleteKey(hKey, 0)); + name = mpt::ustring(); + hKey = NULL; + } + + public: + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + std::vector sign_hash(typename hash_type::result_type hash) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), NULL, 0, &bytes, BCRYPT_PAD_PSS)); + std::vector result(bytes); + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(result.data()), mpt::saturate_cast(result.size()), &bytes, BCRYPT_PAD_PSS)); + return result; + } + + std::vector sign(mpt::const_byte_span payload) { + return sign_hash(hash_type().process(payload).result()); + } + + mpt::ustring jws_compact_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + return mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(signature)); + } + + mpt::ustring jws_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + nlohmann::json header = nlohmann::json::object(); + header["kid"] = name; + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + nlohmann::json jws = nlohmann::json::object(); + jws["payload"] = mpt::encode_base64url(payload); + jws["signatures"] = nlohmann::json::array(); + nlohmann::json jsignature = nlohmann::json::object(); + jsignature["header"] = header; + jsignature["protected"] = mpt::encode_base64url(mpt::as_span(protectedheaderstring)); + jsignature["signature"] = mpt::encode_base64url(mpt::as_span(signature)); + jws["signatures"].push_back(jsignature); + return mpt::convert(mpt::common_encoding::utf8, jws.dump()); + } + }; + +}; // class rsassa_pss + + + +} // namespace asymmetric + + + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +} // namespace crypto + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_JWK_HPP Property changes on: src/mpt/crypto/jwk.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/tests/tests_crypto.hpp =================================================================== --- src/mpt/crypto/tests/tests_crypto.hpp (nonexistent) +++ src/mpt/crypto/tests/tests_crypto.hpp (working copy) @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRYPTO_HPP +#define MPT_BASE_TESTS_CRYPTO_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crypto { + +MPT_TEST_GROUP_INLINE("mpt/crypto") +{ +#if MPT_OS_WINDOWS + mpt::crypto::hash::SHA512::result_type sha512_abc{ + std::byte{0xdd}, std::byte{0xaf}, std::byte{0x35}, std::byte{0xa1}, std::byte{0x93}, std::byte{0x61}, std::byte{0x7a}, std::byte{0xba}, + std::byte{0xcc}, std::byte{0x41}, std::byte{0x73}, std::byte{0x49}, std::byte{0xae}, std::byte{0x20}, std::byte{0x41}, std::byte{0x31}, + std::byte{0x12}, std::byte{0xe6}, std::byte{0xfa}, std::byte{0x4e}, std::byte{0x89}, std::byte{0xa9}, std::byte{0x7e}, std::byte{0xa2}, + std::byte{0x0a}, std::byte{0x9e}, std::byte{0xee}, std::byte{0xe6}, std::byte{0x4b}, std::byte{0x55}, std::byte{0xd3}, std::byte{0x9a}, + std::byte{0x21}, std::byte{0x92}, std::byte{0x99}, std::byte{0x2a}, std::byte{0x27}, std::byte{0x4f}, std::byte{0xc1}, std::byte{0xa8}, + std::byte{0x36}, std::byte{0xba}, std::byte{0x3c}, std::byte{0x23}, std::byte{0xa3}, std::byte{0xfe}, std::byte{0xeb}, std::byte{0xbd}, + std::byte{0x45}, std::byte{0x4d}, std::byte{0x44}, std::byte{0x23}, std::byte{0x64}, std::byte{0x3c}, std::byte{0xe8}, std::byte{0x0e}, + std::byte{0x2a}, std::byte{0x9a}, std::byte{0xc9}, std::byte{0x4f}, std::byte{0xa5}, std::byte{0x4c}, std::byte{0xa4}, std::byte{0x9f}}; + MPT_TEST_EXPECT_EQUAL(mpt::crypto::hash::SHA512().process(mpt::byte_cast(mpt::as_span(std::string("abc")))).result(), sha512_abc); + +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + { + + std::vector data = {std::byte{0x11}, std::byte{0x12}, std::byte{0x13}, std::byte{0x14}}; + + mpt::crypto::keystore keystore(mpt::crypto::keystore::domain::user); + + mpt::crypto::asymmetric::rsassa_pss<>::managed_private_key key(keystore, U_("OpenMPT Test Key 1")); + + auto publickeydata = key.get_public_key_data(); + + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk{publickeydata}; + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk_copy{pk}; + mpt::ustring jwk = publickeydata.as_jwk(); + + std::vector signature = key.sign(mpt::as_span(data)); + mpt::ustring jws = key.jws_sign(mpt::as_span(data)); + mpt::ustring jws_compact = key.jws_compact_sign(mpt::as_span(data)); + + try { + pk.verify(mpt::as_span(data), signature); + auto verifieddata1 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_verify(jws); + auto verifieddata2 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_compact_verify(jws_compact); + MPT_TEST_EXPECT_EQUAL(true, true); + MPT_TEST_EXPECT_EQUAL(data, verifieddata1); + MPT_TEST_EXPECT_EQUAL(data, verifieddata2); + } catch (const mpt::crypto::asymmetric::signature_verification_failed &) { + MPT_TEST_EXPECT_EQUAL(true, false); + } + + key.destroy(); + } + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON +} + + +} // namespace crypto +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRYPTO_HPP Property changes on: src/mpt/crypto/tests/tests_crypto.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/exception.hpp =================================================================== --- src/mpt/crypto/exception.hpp (nonexistent) +++ src/mpt/crypto/exception.hpp (working copy) @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_EXCEPTION_HPP +#define MPT_CRYPTO_EXCEPTION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + +class exception + : public std::runtime_error { +private: + NTSTATUS m_Status; + +public: + exception(NTSTATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + NTSTATUS code() const noexcept { + return m_Status; + } +}; + + +class security_exception + : public std::runtime_error { +private: + SECURITY_STATUS m_Status; + +public: + security_exception(SECURITY_STATUS status) + : std::runtime_error("crypto error") + , m_Status(status) { + return; + } + +public: + SECURITY_STATUS code() const noexcept { + return m_Status; + } +}; + + +inline void CheckNTSTATUS(NTSTATUS status) { + if (status >= 0) { + return; + } else if (status == STATUS_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw exception(status); + } +} + + +inline void CheckSECURITY_STATUS(SECURITY_STATUS status) { + if (status == ERROR_SUCCESS) { + return; + } else if (status == NTE_NO_MEMORY) { + mpt::throw_out_of_memory(); + } else { + throw security_exception(status); + } +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_EXCEPTION_HPP Property changes on: src/mpt/crypto/exception.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/hash.hpp =================================================================== --- src/mpt/crypto/hash.hpp (nonexistent) +++ src/mpt/crypto/hash.hpp (working copy) @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_HASH_HPP +#define MPT_CRYPTO_HASH_HPP + + + +#include "mpt/base/array.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/crypto/exception.hpp" + +#include +#include + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +namespace crypto { + + + +#if MPT_OS_WINDOWS + + +namespace hash { + + +struct hash_traits_md5 { + static constexpr std::size_t output_bits = 128; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_MD5_ALGORITHM; +}; + +struct hash_traits_sha1 { + static constexpr std::size_t output_bits = 160; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA1_ALGORITHM; +}; + +struct hash_traits_sha256 { + static constexpr std::size_t output_bits = 256; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA256_ALGORITHM; +}; + +struct hash_traits_sha512 { + static constexpr std::size_t output_bits = 512; + static constexpr std::size_t output_bytes = output_bits / 8; + static constexpr const wchar_t * bcrypt_name = BCRYPT_SHA512_ALGORITHM; +}; + +template +class hash_impl { + +public: + using traits = Traits; + + using result_type = std::array; + +private: + BCRYPT_ALG_HANDLE hAlg = NULL; + std::vector hashState; + std::vector hashResult; + BCRYPT_HASH_HANDLE hHash = NULL; + +private: + void init() { + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hAlg, traits::bcrypt_name, NULL, 0)); + if (!hAlg) { + throw exception(0); + } + DWORD hashStateSize = 0; + DWORD hashStateSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&hashStateSize, sizeof(DWORD), &hashStateSizeSize, 0)); + if (hashStateSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashStateSize <= 0) { + throw exception(0); + } + hashState.resize(hashStateSize); + DWORD hashResultSize = 0; + DWORD hashResultSizeSize = 0; + CheckNTSTATUS(BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&hashResultSize, sizeof(DWORD), &hashResultSizeSize, 0)); + if (hashResultSizeSize != sizeof(DWORD)) { + throw exception(0); + } + if (hashResultSize <= 0) { + throw exception(0); + } + if (hashResultSize != mpt::extent()) { + throw exception(0); + } + hashResult.resize(hashResultSize); + CheckNTSTATUS(BCryptCreateHash(hAlg, &hHash, hashState.data(), hashStateSize, NULL, 0, 0)); + if (!hHash) { + throw exception(0); + } + } + + void cleanup() { + if (hHash) { + BCryptDestroyHash(hHash); + hHash = NULL; + } + hashResult.resize(0); + hashResult.shrink_to_fit(); + hashState.resize(0); + hashState.shrink_to_fit(); + if (hAlg) { + BCryptCloseAlgorithmProvider(hAlg, 0); + hAlg = NULL; + } + } + +public: + hash_impl() { + try { + init(); + } catch (...) { + cleanup(); + throw; + } + } + hash_impl(const hash_impl &) = delete; + hash_impl & operator=(const hash_impl &) = delete; + ~hash_impl() { + cleanup(); + } + +public: + hash_impl & process(mpt::const_byte_span data) { + CheckNTSTATUS(BCryptHashData(hHash, const_cast(mpt::byte_cast(data.data())), mpt::saturate_cast(data.size()), 0)); + return *this; + } + + result_type result() { + result_type res = mpt::init_array(std::byte{0}); + CheckNTSTATUS(BCryptFinishHash(hHash, hashResult.data(), mpt::saturate_cast(hashResult.size()), 0)); + assert(hashResult.size() == mpt::extent()); + std::transform(hashResult.begin(), hashResult.end(), res.begin(), [](BYTE b) { return mpt::as_byte(b); }); + return res; + } +}; + +using MD5 = hash_impl; +using SHA1 = hash_impl; +using SHA256 = hash_impl; +using SHA512 = hash_impl; + + +} // namespace hash + + +#endif // MPT_OS_WINDOWS + + + +} // namespace crypto + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_HASH_HPP Property changes on: src/mpt/crypto/hash.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/jwk.hpp =================================================================== --- src/mpt/crypto/jwk.hpp (nonexistent) +++ src/mpt/crypto/jwk.hpp (working copy) @@ -0,0 +1,532 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_CRYPTO_JWK_HPP +#define MPT_CRYPTO_JWK_HPP + + + +#include "mpt/base/alloc.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/base/span.hpp" +#include "mpt/binary/base64url.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/json/json.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#include +#endif // MPT_OS_WINDOWS + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace crypto { + + + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +class keystore { +public: + enum class domain + { + system = 1, + user = 2, + }; + +private: + NCRYPT_PROV_HANDLE hProv = NULL; + domain ProvDomain = domain::user; + +private: + void cleanup() { + if (hProv) { + NCryptFreeObject(hProv); + hProv = NULL; + } + } + +public: + keystore(domain d) + : ProvDomain(d) { + try { + CheckSECURITY_STATUS(NCryptOpenStorageProvider(&hProv, MS_KEY_STORAGE_PROVIDER, 0)); + } catch (...) { + cleanup(); + throw; + } + } + ~keystore() { + return; + } + operator NCRYPT_PROV_HANDLE() { + return hProv; + } + keystore::domain store_domain() const { + return ProvDomain; + } +}; + + + +namespace asymmetric { + + + +class signature_verification_failed + : public std::runtime_error { +public: + signature_verification_failed() + : std::runtime_error("Signature Verification failed.") { + return; + } +}; + + + +inline std::vector jws_get_keynames(const mpt::ustring & jws_) { + std::vector result; + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + for (const auto & s : jws["signatures"]) { + result.push_back(s["header"]["kid"]); + } + return result; +} + + + +struct RSASSA_PSS_SHA512_traits { + using hash_type = mpt::crypto::hash::SHA512; + static constexpr const char * jwk_alg = "PS512"; +}; + + + +template +class rsassa_pss { + +public: + using hash_type = typename Traits::hash_type; + static constexpr const char * jwk_alg = Traits::jwk_alg; + + struct public_key_data { + + mpt::ustring name; + uint32 length = 0; + std::vector public_exp; + std::vector modulus; + + std::vector as_cng_blob() const { + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + rsakey_blob.Magic = BCRYPT_RSAPUBLIC_MAGIC; + rsakey_blob.BitLength = length; + rsakey_blob.cbPublicExp = mpt::saturate_cast(public_exp.size()); + rsakey_blob.cbModulus = mpt::saturate_cast(modulus.size()); + std::vector result(sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size() + modulus.size()); + std::memcpy(result.data(), &rsakey_blob, sizeof(BCRYPT_RSAKEY_BLOB)); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB), public_exp.data(), public_exp.size()); + std::memcpy(result.data() + sizeof(BCRYPT_RSAKEY_BLOB) + public_exp.size(), modulus.data(), modulus.size()); + return result; + } + + mpt::ustring as_jwk() const { + nlohmann::json json = nlohmann::json::object(); + json["kid"] = name; + json["kty"] = "RSA"; + json["alg"] = jwk_alg; + json["use"] = "sig"; + json["e"] = mpt::encode_base64url(mpt::as_span(public_exp)); + json["n"] = mpt::encode_base64url(mpt::as_span(modulus)); + return mpt::convert(mpt::common_encoding::utf8, json.dump()); + } + + static public_key_data from_jwk(const mpt::ustring & jwk) { + public_key_data result; + try { + nlohmann::json json = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk)); + if (json["kty"] != "RSA") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["alg"] != jwk_alg) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + if (json["use"] != "sig") { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + result.name = json["kid"].get(); + result.public_exp = mpt::decode_base64url(json["e"]); + result.modulus = mpt::decode_base64url(json["n"]); + result.length = mpt::saturate_cast(result.modulus.size() * 8); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (...) { + throw std::runtime_error("Cannot parse RSA public key JWK."); + } + return result; + } + + static public_key_data from_cng_blob(const mpt::ustring & name, const std::vector & blob) { + public_key_data result; + BCRYPT_RSAKEY_BLOB rsakey_blob{}; + if (blob.size() < sizeof(BCRYPT_RSAKEY_BLOB)) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + std::memcpy(&rsakey_blob, blob.data(), sizeof(BCRYPT_RSAKEY_BLOB)); + if (rsakey_blob.Magic != BCRYPT_RSAPUBLIC_MAGIC) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + if (blob.size() != sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus) { + throw std::runtime_error("Cannot parse RSA public key blob."); + } + result.name = name; + result.length = rsakey_blob.BitLength; + result.public_exp = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB), blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp); + result.modulus = std::vector(blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp, blob.data() + sizeof(BCRYPT_RSAKEY_BLOB) + rsakey_blob.cbPublicExp + rsakey_blob.cbModulus); + return result; + } + }; + + + + static std::vector parse_jwk_set(const mpt::ustring & jwk_set_) { + std::vector result; + nlohmann::json jwk_set = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jwk_set_)); + for (const auto & k : jwk_set["keys"]) { + try { + result.push_back(public_key_data::from_jwk(mpt::convert(mpt::common_encoding::utf8, k.dump()))); + } catch (...) { + // nothing + } + } + return result; + } + + + + class public_key { + + private: + mpt::ustring name; + BCRYPT_ALG_HANDLE hSignAlg = NULL; + BCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + BCryptDestroyKey(hKey); + hKey = NULL; + } + if (hSignAlg) { + BCryptCloseAlgorithmProvider(hSignAlg, 0); + hSignAlg = NULL; + } + } + + public: + public_key(const public_key_data & data) { + try { + name = data.name; + CheckNTSTATUS(BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0)); + std::vector blob = data.as_cng_blob(); + CheckNTSTATUS(BCryptImportKeyPair(hSignAlg, NULL, BCRYPT_RSAPUBLIC_BLOB, &hKey, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), 0)); + } catch (...) { + cleanup(); + throw; + } + } + + public_key(const public_key & other) + : public_key(other.get_public_key_data()) { + return; + } + + public_key & operator=(const public_key & other) { + if (&other == this) { + return *this; + } + public_key copy(other); + { + using std::swap; + swap(copy.name, name); + swap(copy.hSignAlg, hSignAlg); + swap(copy.hKey, hKey); + } + return *this; + } + + ~public_key() { + cleanup(); + } + + mpt::ustring get_name() const { + return name; + } + + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckNTSTATUS(BCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + void verify_hash(typename hash_type::result_type hash, std::vector signature) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + NTSTATUS result = BCryptVerifySignature(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(signature.data()), mpt::saturate_cast(signature.size()), BCRYPT_PAD_PSS); + if (result == 0x00000000 /*STATUS_SUCCESS*/) { + return; + } + if (result == 0xC000A000 /*STATUS_INVALID_SIGNATURE*/) { + throw signature_verification_failed(); + } + CheckNTSTATUS(result); + throw signature_verification_failed(); + } + + void verify(mpt::const_byte_span payload, const std::vector & signature) { + verify_hash(hash_type().process(payload).result(), signature); + } + + std::vector jws_verify(const mpt::ustring & jws_) { + nlohmann::json jws = nlohmann::json::parse(mpt::convert(mpt::common_encoding::utf8, jws_)); + std::vector payload = mpt::decode_base64url(jws["payload"]); + nlohmann::json jsignature = nlohmann::json::object(); + bool sigfound = false; + for (const auto & s : jws["signatures"]) { + if (s["header"]["kid"] == mpt::convert(mpt::common_encoding::utf8, name)) { + jsignature = s; + sigfound = true; + } + } + if (!sigfound) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(jsignature["protected"]); + std::vector signature = mpt::decode_base64url(jsignature["signature"]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + + std::vector jws_compact_verify(const mpt::ustring & jws) { + std::vector parts = mpt::split(jws, MPT_USTRING(".")); + if (parts.size() != 3) { + throw signature_verification_failed(); + } + std::vector protectedheaderraw = mpt::decode_base64url(parts[0]); + std::vector payload = mpt::decode_base64url(parts[1]); + std::vector signature = mpt::decode_base64url(parts[2]); + nlohmann::json header = nlohmann::json::parse(mpt::buffer_cast(protectedheaderraw)); + if (header["typ"] != "JWT") { + throw signature_verification_failed(); + } + if (header["alg"] != jwk_alg) { + throw signature_verification_failed(); + } + verify_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderraw)) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(payload)))))).result(), signature); + return payload; + } + }; + + + + static inline void jws_verify_at_least_one(std::vector & keys, const std::vector & expectedPayload, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + bool sigchecked = false; + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + if (expectedPayload != key.jws_verify(signature)) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + sigchecked = true; + } + } + } + if (!sigchecked) { + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + } + + + + static inline std::vector jws_verify_at_least_one(std::vector & keys, const mpt::ustring & signature) { + std::vector keynames = mpt::crypto::asymmetric::jws_get_keynames(signature); + for (const auto & keyname : keynames) { + for (auto & key : keys) { + if (key.get_name() == keyname) { + return key.jws_verify(signature); + } + } + } + throw mpt::crypto::asymmetric::signature_verification_failed(); + } + + + + class managed_private_key { + + private: + mpt::ustring name; + NCRYPT_KEY_HANDLE hKey = NULL; + + private: + void cleanup() { + if (hKey) { + NCryptFreeObject(hKey); + hKey = NULL; + } + } + + public: + managed_private_key() = delete; + + managed_private_key(const managed_private_key &) = delete; + + managed_private_key & operator=(const managed_private_key &) = delete; + + managed_private_key(keystore & keystore) { + try { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, NULL, 0, 0)); + } catch (...) { + cleanup(); + throw; + } + } + + managed_private_key(keystore & keystore, const mpt::ustring & name_) + : name(name_) { + try { + SECURITY_STATUS openKeyStatus = NCryptOpenKey(keystore, &hKey, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0)); + if (openKeyStatus == NTE_BAD_KEYSET) { + CheckSECURITY_STATUS(NCryptCreatePersistedKey(keystore, &hKey, BCRYPT_RSA_ALGORITHM, mpt::convert(name).c_str(), 0, (keystore.store_domain() == keystore::domain::system ? NCRYPT_MACHINE_KEY_FLAG : 0))); + DWORD length = mpt::saturate_cast(keysize); + CheckSECURITY_STATUS(NCryptSetProperty(hKey, NCRYPT_LENGTH_PROPERTY, (PBYTE)&length, mpt::saturate_cast(sizeof(DWORD)), 0)); + CheckSECURITY_STATUS(NCryptFinalizeKey(hKey, 0)); + } else { + CheckSECURITY_STATUS(openKeyStatus); + } + } catch (...) { + cleanup(); + throw; + } + } + + ~managed_private_key() { + cleanup(); + } + + void destroy() { + CheckSECURITY_STATUS(NCryptDeleteKey(hKey, 0)); + name = mpt::ustring(); + hKey = NULL; + } + + public: + public_key_data get_public_key_data() const { + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, NULL, 0, &bytes, 0)); + std::vector blob(bytes); + CheckSECURITY_STATUS(NCryptExportKey(hKey, NULL, BCRYPT_RSAPUBLIC_BLOB, NULL, mpt::byte_cast(blob.data()), mpt::saturate_cast(blob.size()), &bytes, 0)); + return public_key_data::from_cng_blob(name, blob); + } + + std::vector sign_hash(typename hash_type::result_type hash) { + BCRYPT_PSS_PADDING_INFO paddinginfo; + paddinginfo.pszAlgId = hash_type::traits::bcrypt_name; + paddinginfo.cbSalt = mpt::saturate_cast(hash_type::traits::output_bytes); + DWORD bytes = 0; + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), NULL, 0, &bytes, BCRYPT_PAD_PSS)); + std::vector result(bytes); + CheckSECURITY_STATUS(NCryptSignHash(hKey, &paddinginfo, mpt::byte_cast(hash.data()), mpt::saturate_cast(hash.size()), mpt::byte_cast(result.data()), mpt::saturate_cast(result.size()), &bytes, BCRYPT_PAD_PSS)); + return result; + } + + std::vector sign(mpt::const_byte_span payload) { + return sign_hash(hash_type().process(payload).result()); + } + + mpt::ustring jws_compact_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + return mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload) + MPT_USTRING(".") + mpt::encode_base64url(mpt::as_span(signature)); + } + + mpt::ustring jws_sign(mpt::const_byte_span payload) { + nlohmann::json protectedheader = nlohmann::json::object(); + protectedheader["typ"] = "JWT"; + protectedheader["alg"] = jwk_alg; + std::string protectedheaderstring = protectedheader.dump(); + nlohmann::json header = nlohmann::json::object(); + header["kid"] = name; + std::vector signature = sign_hash(hash_type().process(mpt::byte_cast(mpt::as_span(mpt::convert(mpt::common_encoding::utf8, mpt::encode_base64url(mpt::as_span(protectedheaderstring)) + MPT_USTRING(".") + mpt::encode_base64url(payload))))).result()); + nlohmann::json jws = nlohmann::json::object(); + jws["payload"] = mpt::encode_base64url(payload); + jws["signatures"] = nlohmann::json::array(); + nlohmann::json jsignature = nlohmann::json::object(); + jsignature["header"] = header; + jsignature["protected"] = mpt::encode_base64url(mpt::as_span(protectedheaderstring)); + jsignature["signature"] = mpt::encode_base64url(mpt::as_span(signature)); + jws["signatures"].push_back(jsignature); + return mpt::convert(mpt::common_encoding::utf8, jws.dump()); + } + }; + +}; // class rsassa_pss + + + +} // namespace asymmetric + + + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + + +} // namespace crypto + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_CRYPTO_JWK_HPP Property changes on: src/mpt/crypto/jwk.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/tests/tests_crypto.hpp =================================================================== --- src/mpt/crypto/tests/tests_crypto.hpp (nonexistent) +++ src/mpt/crypto/tests/tests_crypto.hpp (working copy) @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRYPTO_HPP +#define MPT_BASE_TESTS_CRYPTO_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crypto { + +MPT_TEST_GROUP_INLINE("mpt/crypto") +{ +#if MPT_OS_WINDOWS + mpt::crypto::hash::SHA512::result_type sha512_abc{ + std::byte{0xdd}, std::byte{0xaf}, std::byte{0x35}, std::byte{0xa1}, std::byte{0x93}, std::byte{0x61}, std::byte{0x7a}, std::byte{0xba}, + std::byte{0xcc}, std::byte{0x41}, std::byte{0x73}, std::byte{0x49}, std::byte{0xae}, std::byte{0x20}, std::byte{0x41}, std::byte{0x31}, + std::byte{0x12}, std::byte{0xe6}, std::byte{0xfa}, std::byte{0x4e}, std::byte{0x89}, std::byte{0xa9}, std::byte{0x7e}, std::byte{0xa2}, + std::byte{0x0a}, std::byte{0x9e}, std::byte{0xee}, std::byte{0xe6}, std::byte{0x4b}, std::byte{0x55}, std::byte{0xd3}, std::byte{0x9a}, + std::byte{0x21}, std::byte{0x92}, std::byte{0x99}, std::byte{0x2a}, std::byte{0x27}, std::byte{0x4f}, std::byte{0xc1}, std::byte{0xa8}, + std::byte{0x36}, std::byte{0xba}, std::byte{0x3c}, std::byte{0x23}, std::byte{0xa3}, std::byte{0xfe}, std::byte{0xeb}, std::byte{0xbd}, + std::byte{0x45}, std::byte{0x4d}, std::byte{0x44}, std::byte{0x23}, std::byte{0x64}, std::byte{0x3c}, std::byte{0xe8}, std::byte{0x0e}, + std::byte{0x2a}, std::byte{0x9a}, std::byte{0xc9}, std::byte{0x4f}, std::byte{0xa5}, std::byte{0x4c}, std::byte{0xa4}, std::byte{0x9f}}; + MPT_TEST_EXPECT_EQUAL(mpt::crypto::hash::SHA512().process(mpt::byte_cast(mpt::as_span(std::string("abc")))).result(), sha512_abc); + +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + { + + std::vector data = {std::byte{0x11}, std::byte{0x12}, std::byte{0x13}, std::byte{0x14}}; + + mpt::crypto::keystore keystore(mpt::crypto::keystore::domain::user); + + mpt::crypto::asymmetric::rsassa_pss<>::managed_private_key key(keystore, U_("OpenMPT Test Key 1")); + + auto publickeydata = key.get_public_key_data(); + + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk{publickeydata}; + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk_copy{pk}; + mpt::ustring jwk = publickeydata.as_jwk(); + + std::vector signature = key.sign(mpt::as_span(data)); + mpt::ustring jws = key.jws_sign(mpt::as_span(data)); + mpt::ustring jws_compact = key.jws_compact_sign(mpt::as_span(data)); + + try { + pk.verify(mpt::as_span(data), signature); + auto verifieddata1 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_verify(jws); + auto verifieddata2 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_compact_verify(jws_compact); + MPT_TEST_EXPECT_EQUAL(true, true); + MPT_TEST_EXPECT_EQUAL(data, verifieddata1); + MPT_TEST_EXPECT_EQUAL(data, verifieddata2); + } catch (const mpt::crypto::asymmetric::signature_verification_failed &) { + MPT_TEST_EXPECT_EQUAL(true, false); + } + + key.destroy(); + } + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON +} + + +} // namespace crypto +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRYPTO_HPP Property changes on: src/mpt/crypto/tests/tests_crypto.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/crypto/tests/tests_crypto.hpp =================================================================== --- src/mpt/crypto/tests/tests_crypto.hpp (nonexistent) +++ src/mpt/crypto/tests/tests_crypto.hpp (working copy) @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_CRYPTO_HPP +#define MPT_BASE_TESTS_CRYPTO_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/crypto/exception.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/detect/nlohmann_json.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace crypto { + +MPT_TEST_GROUP_INLINE("mpt/crypto") +{ +#if MPT_OS_WINDOWS + mpt::crypto::hash::SHA512::result_type sha512_abc{ + std::byte{0xdd}, std::byte{0xaf}, std::byte{0x35}, std::byte{0xa1}, std::byte{0x93}, std::byte{0x61}, std::byte{0x7a}, std::byte{0xba}, + std::byte{0xcc}, std::byte{0x41}, std::byte{0x73}, std::byte{0x49}, std::byte{0xae}, std::byte{0x20}, std::byte{0x41}, std::byte{0x31}, + std::byte{0x12}, std::byte{0xe6}, std::byte{0xfa}, std::byte{0x4e}, std::byte{0x89}, std::byte{0xa9}, std::byte{0x7e}, std::byte{0xa2}, + std::byte{0x0a}, std::byte{0x9e}, std::byte{0xee}, std::byte{0xe6}, std::byte{0x4b}, std::byte{0x55}, std::byte{0xd3}, std::byte{0x9a}, + std::byte{0x21}, std::byte{0x92}, std::byte{0x99}, std::byte{0x2a}, std::byte{0x27}, std::byte{0x4f}, std::byte{0xc1}, std::byte{0xa8}, + std::byte{0x36}, std::byte{0xba}, std::byte{0x3c}, std::byte{0x23}, std::byte{0xa3}, std::byte{0xfe}, std::byte{0xeb}, std::byte{0xbd}, + std::byte{0x45}, std::byte{0x4d}, std::byte{0x44}, std::byte{0x23}, std::byte{0x64}, std::byte{0x3c}, std::byte{0xe8}, std::byte{0x0e}, + std::byte{0x2a}, std::byte{0x9a}, std::byte{0xc9}, std::byte{0x4f}, std::byte{0xa5}, std::byte{0x4c}, std::byte{0xa4}, std::byte{0x9f}}; + MPT_TEST_EXPECT_EQUAL(mpt::crypto::hash::SHA512().process(mpt::byte_cast(mpt::as_span(std::string("abc")))).result(), sha512_abc); + +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON + + { + + std::vector data = {std::byte{0x11}, std::byte{0x12}, std::byte{0x13}, std::byte{0x14}}; + + mpt::crypto::keystore keystore(mpt::crypto::keystore::domain::user); + + mpt::crypto::asymmetric::rsassa_pss<>::managed_private_key key(keystore, U_("OpenMPT Test Key 1")); + + auto publickeydata = key.get_public_key_data(); + + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk{publickeydata}; + mpt::crypto::asymmetric::rsassa_pss<>::public_key pk_copy{pk}; + mpt::ustring jwk = publickeydata.as_jwk(); + + std::vector signature = key.sign(mpt::as_span(data)); + mpt::ustring jws = key.jws_sign(mpt::as_span(data)); + mpt::ustring jws_compact = key.jws_compact_sign(mpt::as_span(data)); + + try { + pk.verify(mpt::as_span(data), signature); + auto verifieddata1 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_verify(jws); + auto verifieddata2 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_compact_verify(jws_compact); + MPT_TEST_EXPECT_EQUAL(true, true); + MPT_TEST_EXPECT_EQUAL(data, verifieddata1); + MPT_TEST_EXPECT_EQUAL(data, verifieddata2); + } catch (const mpt::crypto::asymmetric::signature_verification_failed &) { + MPT_TEST_EXPECT_EQUAL(true, false); + } + + key.destroy(); + } + +#endif // MPT_OS_WINDOWS && MPT_DETECTED_NLOHMANN_JSON +} + + +} // namespace crypto +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_CRYPTO_HPP Property changes on: src/mpt/crypto/tests/tests_crypto.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/mfc.hpp =================================================================== --- src/mpt/detect/mfc.hpp (nonexistent) +++ src/mpt/detect/mfc.hpp (working copy) @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_MFC_HPP +#define MPT_DETECT_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" + +#if defined(MPT_WITH_MFC) +#if !__has_include() +#error "MPT_WITH_MFC defined but not found." +#endif +#if !MPT_COMPILER_GENERIC && !MPT_COMPILER_MSVC && !MPT_COMPILER_CLANG +MPT_WARNING("Using MFC with unsupported compiler.") +#endif +#define MPT_DETECTED_MFC 1 +#else +#define MPT_DETECTED_MFC 0 +#endif + +#endif // MPT_DETECT_MFC_HPP Property changes on: src/mpt/detect/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/nlohmann_json.hpp =================================================================== --- src/mpt/detect/nlohmann_json.hpp (nonexistent) +++ src/mpt/detect/nlohmann_json.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_NLOHMANN_JSON_HPP +#define MPT_DETECT_NLOHMANN_JSON_HPP + +#if defined(MPT_WITH_NLOHMANN_JSON) +#if !__has_include() +#error "MPT_WITH_NLOHMANN_JSON defined but not found." +#endif +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#if __has_include() +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#define MPT_DETECTED_NLOHMANN_JSON 0 +#endif +#endif + +#endif // MPT_DETECT_NLOHMANN_JSON_HPP Property changes on: src/mpt/detect/nlohmann_json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/mfc.hpp =================================================================== --- src/mpt/detect/mfc.hpp (nonexistent) +++ src/mpt/detect/mfc.hpp (working copy) @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_MFC_HPP +#define MPT_DETECT_MFC_HPP + +#include "mpt/base/compiletime_warning.hpp" + +#if defined(MPT_WITH_MFC) +#if !__has_include() +#error "MPT_WITH_MFC defined but not found." +#endif +#if !MPT_COMPILER_GENERIC && !MPT_COMPILER_MSVC && !MPT_COMPILER_CLANG +MPT_WARNING("Using MFC with unsupported compiler.") +#endif +#define MPT_DETECTED_MFC 1 +#else +#define MPT_DETECTED_MFC 0 +#endif + +#endif // MPT_DETECT_MFC_HPP Property changes on: src/mpt/detect/mfc.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/detect/nlohmann_json.hpp =================================================================== --- src/mpt/detect/nlohmann_json.hpp (nonexistent) +++ src/mpt/detect/nlohmann_json.hpp (working copy) @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_DETECT_NLOHMANN_JSON_HPP +#define MPT_DETECT_NLOHMANN_JSON_HPP + +#if defined(MPT_WITH_NLOHMANN_JSON) +#if !__has_include() +#error "MPT_WITH_NLOHMANN_JSON defined but not found." +#endif +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#if __has_include() +#define MPT_DETECTED_NLOHMANN_JSON 1 +#else +#define MPT_DETECTED_NLOHMANN_JSON 0 +#endif +#endif + +#endif // MPT_DETECT_NLOHMANN_JSON_HPP Property changes on: src/mpt/detect/nlohmann_json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/floatingpoint.hpp =================================================================== --- src/mpt/endian/floatingpoint.hpp (nonexistent) +++ src/mpt/endian/floatingpoint.hpp (working copy) @@ -0,0 +1,441 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/floatingpoint.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// 1.0f --> 0x3f800000u +MPT_FORCEINLINE uint32 EncodeIEEE754binary32(float32 f) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + float m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0f) { + uint32 expo = 0u; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = 0u; + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } else { + uint32 expo = e + 127 - 1; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = static_cast(std::fabs(std::ldexp(m, 24))); + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } + } +} + +MPT_FORCEINLINE uint64 EncodeIEEE754binary64(float64 f) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + double m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0) { + uint64 expo = 0u; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = 0u; + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } else { + uint64 expo = static_cast(e) + 1023 - 1; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = static_cast(std::fabs(std::ldexp(m, 53))); + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } + } +} + +// 0x3f800000u --> 1.0f +MPT_FORCEINLINE float32 DecodeIEEE754binary32(uint32 i) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(i); + } else { + uint32 mant = (i & 0x007fffffu) >> 0; + uint32 expo = (i & 0x7f800000u) >> 23; + uint32 sign = (i & 0x80000000u) >> 31; + if (expo == 0) { + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x00800000u; + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } + } +} + +MPT_FORCEINLINE float64 DecodeIEEE754binary64(uint64 i) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(i); + } else { + uint64 mant = (i & 0x000fffffffffffffull) >> 0; + uint64 expo = (i & 0x7ff0000000000000ull) >> 52; + uint64 sign = (i & 0x8000000000000000ull) >> 63; + if (expo == 0) { + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x0010000000000000ull; + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } + } +} + + +// template parameters are byte indices corresponding to the individual bytes of iee754 in memory +template +struct IEEE754binary32Emulated { +public: + using self_t = IEEE754binary32Emulated; + std::byte bytes[4]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary32Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary32Emulated(float32 f) { + SetInt32(EncodeIEEE754binary32(f)); + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + } + MPT_FORCEINLINE operator float32() const { + return DecodeIEEE754binary32(GetInt32()); + } + MPT_FORCEINLINE self_t & SetInt32(uint32 i) { + bytes[hihi] = static_cast(i >> 24); + bytes[hilo] = static_cast(i >> 16); + bytes[lohi] = static_cast(i >> 8); + bytes[lolo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return 0u + | (static_cast(bytes[hihi]) << 24) + | (static_cast(bytes[hilo]) << 16) + | (static_cast(bytes[lohi]) << 8) + | (static_cast(bytes[lolo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; +template +struct IEEE754binary64Emulated { +public: + using self_t = IEEE754binary64Emulated; + std::byte bytes[8]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary64Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary64Emulated(float64 f) { + SetInt64(EncodeIEEE754binary64(f)); + } + MPT_FORCEINLINE explicit IEEE754binary64Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + bytes[4] = b4; + bytes[5] = b5; + bytes[6] = b6; + bytes[7] = b7; + } + MPT_FORCEINLINE operator float64() const { + return DecodeIEEE754binary64(GetInt64()); + } + MPT_FORCEINLINE self_t & SetInt64(uint64 i) { + bytes[hihihi] = static_cast(i >> 56); + bytes[hihilo] = static_cast(i >> 48); + bytes[hilohi] = static_cast(i >> 40); + bytes[hilolo] = static_cast(i >> 32); + bytes[lohihi] = static_cast(i >> 24); + bytes[lohilo] = static_cast(i >> 16); + bytes[lolohi] = static_cast(i >> 8); + bytes[lololo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return 0u + | (static_cast(bytes[hihihi]) << 56) + | (static_cast(bytes[hihilo]) << 48) + | (static_cast(bytes[hilohi]) << 40) + | (static_cast(bytes[hilolo]) << 32) + | (static_cast(bytes[lohihi]) << 24) + | (static_cast(bytes[lohilo]) << 16) + | (static_cast(bytes[lolohi]) << 8) + | (static_cast(bytes[lololo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3] + && bytes[4] == cmp.bytes[4] + && bytes[5] == cmp.bytes[5] + && bytes[6] == cmp.bytes[6] + && bytes[7] == cmp.bytes[7]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; + +using IEEE754binary32EmulatedBE = IEEE754binary32Emulated<0, 1, 2, 3>; +using IEEE754binary32EmulatedLE = IEEE754binary32Emulated<3, 2, 1, 0>; +using IEEE754binary64EmulatedBE = IEEE754binary64Emulated<0, 1, 2, 3, 4, 5, 6, 7>; +using IEEE754binary64EmulatedLE = IEEE754binary64Emulated<7, 6, 5, 4, 3, 2, 1, 0>; + +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedLE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedLE &) { + return true; +} + +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(8)); + +template +struct IEEE754binary32Native { +public: + float32 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return static_cast(EncodeIEEE754binary32(value) >> (i * 8)); + } + if constexpr (endian == mpt::endian::big) { + return static_cast(EncodeIEEE754binary32(value) >> ((4 - 1 - i) * 8)); + } + } + IEEE754binary32Native() = default; + MPT_FORCEINLINE explicit IEEE754binary32Native(float32 f) { + value = f; + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 24) | (static_cast(b1) << 16) | (static_cast(b2) << 8) | (static_cast(b3) << 0)); + } + } + MPT_FORCEINLINE operator float32() const { + return value; + } + MPT_FORCEINLINE IEEE754binary32Native & SetInt32(uint32 i) { + value = DecodeIEEE754binary32(i); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return EncodeIEEE754binary32(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary32Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary32Native & cmp) const { + return value != cmp.value; + } +}; + +template +struct IEEE754binary64Native { +public: + float64 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> (i * 8))); + } + if constexpr (endian == mpt::endian::big) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> ((8 - 1 - i) * 8))); + } + } + IEEE754binary64Native() = default; + MPT_FORCEINLINE explicit IEEE754binary64Native(float64 f) { + value = f; + } + MPT_FORCEINLINE explicit IEEE754binary64Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24) | (static_cast(b4) << 32) | (static_cast(b5) << 40) | (static_cast(b6) << 48) | (static_cast(b7) << 56)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 56) | (static_cast(b1) << 48) | (static_cast(b2) << 40) | (static_cast(b3) << 32) | (static_cast(b4) << 24) | (static_cast(b5) << 16) | (static_cast(b6) << 8) | (static_cast(b7) << 0)); + } + } + MPT_FORCEINLINE operator float64() const { + return value; + } + MPT_FORCEINLINE IEEE754binary64Native & SetInt64(uint64 i) { + value = DecodeIEEE754binary64(i); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return EncodeIEEE754binary64(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary64Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary64Native & cmp) const { + return value != cmp.value; + } +}; + +static_assert((sizeof(IEEE754binary32Native<>) == 4)); +static_assert((sizeof(IEEE754binary64Native<>) == 8)); + +constexpr bool declare_binary_safe(const IEEE754binary32Native<> &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64Native<> &) noexcept { + return true; +} + +template +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32Native<>; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64Native<>; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32Native<>; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64Native<>; +}; + +using IEEE754binary32LE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64BE; + +static_assert(sizeof(IEEE754binary32LE) == 4); +static_assert(sizeof(IEEE754binary32BE) == 4); +static_assert(sizeof(IEEE754binary64LE) == 8); +static_assert(sizeof(IEEE754binary64BE) == 8); + + +// unaligned + +using float32le = IEEE754binary32EmulatedLE; +using float32be = IEEE754binary32EmulatedBE; +using float64le = IEEE754binary64EmulatedLE; +using float64be = IEEE754binary64EmulatedBE; + +static_assert(sizeof(float32le) == 4); +static_assert(sizeof(float32be) == 4); +static_assert(sizeof(float64le) == 8); +static_assert(sizeof(float64be) == 8); + + +// potentially aligned + +using float32le_fast = IEEE754binary32LE; +using float32be_fast = IEEE754binary32BE; +using float64le_fast = IEEE754binary64LE; +using float64be_fast = IEEE754binary64BE; + +static_assert(sizeof(float32le_fast) == 4); +static_assert(sizeof(float32be_fast) == 4); +static_assert(sizeof(float64le_fast) == 8); +static_assert(sizeof(float64be_fast) == 8); + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/integer.hpp =================================================================== --- src/mpt/endian/integer.hpp (nonexistent) +++ src/mpt/endian/integer.hpp (working copy) @@ -0,0 +1,487 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/bit.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include +#include +#include + +#if MPT_COMPILER_MSVC +#include +#endif + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct BigEndian_tag { + static constexpr mpt::endian endian = mpt::endian::big; +}; + +struct LittleEndian_tag { + static constexpr mpt::endian endian = mpt::endian::little; +}; + + + +constexpr inline uint16 constexpr_bswap16(uint16 x) noexcept { + return uint16(0) + | ((x >> 8) & 0x00FFu) + | ((x << 8) & 0xFF00u); +} + +constexpr inline uint32 constexpr_bswap32(uint32 x) noexcept { + return uint32(0) + | ((x & 0x000000FFu) << 24) + | ((x & 0x0000FF00u) << 8) + | ((x & 0x00FF0000u) >> 8) + | ((x & 0xFF000000u) >> 24); +} + +constexpr inline uint64 constexpr_bswap64(uint64 x) noexcept { + return uint64(0) + | (((x >> 0) & 0xffull) << 56) + | (((x >> 8) & 0xffull) << 48) + | (((x >> 16) & 0xffull) << 40) + | (((x >> 24) & 0xffull) << 32) + | (((x >> 32) & 0xffull) << 24) + | (((x >> 40) & 0xffull) << 16) + | (((x >> 48) & 0xffull) << 8) + | (((x >> 56) & 0xffull) << 0); +} + +#if MPT_COMPILER_GCC +#define MPT_bswap16 __builtin_bswap16 +#define MPT_bswap32 __builtin_bswap32 +#define MPT_bswap64 __builtin_bswap64 +#elif MPT_COMPILER_MSVC +#define MPT_bswap16 _byteswap_ushort +#define MPT_bswap32 _byteswap_ulong +#define MPT_bswap64 _byteswap_uint64 +#endif + +// No intrinsics available +#ifndef MPT_bswap16 +#define MPT_bswap16(x) mpt::constexpr_bswap16(x) +#endif +#ifndef MPT_bswap32 +#define MPT_bswap32(x) mpt::constexpr_bswap32(x) +#endif +#ifndef MPT_bswap64 +#define MPT_bswap64(x) mpt::constexpr_bswap64(x) +#endif + + + +template +MPT_CONSTEXPRINLINE std::array EndianEncode(T val) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + unsigned_base_type uval = static_cast(val); + std::array data{}; + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[(sizeof(base_type) - 1) - i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } + return data; +} + +template +MPT_CONSTEXPRINLINE T EndianDecode(std::array data) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + base_type val = base_type(); + unsigned_base_type uval = unsigned_base_type(); + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[i])) << (i * 8); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[(sizeof(base_type) - 1) - i])) << (i * 8); + } + } + val = static_cast(uval); + return val; +} + + +MPT_CONSTEXPR20_FUN uint64 SwapBytesImpl(uint64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN uint32 SwapBytesImpl(uint32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN uint16 SwapBytesImpl(uint16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +MPT_CONSTEXPR20_FUN int64 SwapBytesImpl(int64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN int32 SwapBytesImpl(int32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN int16 SwapBytesImpl(int16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +// Do NOT remove these overloads, even if they seem useless. +// We do not want risking to extend 8bit integers to int and then +// endian-converting and casting back to int. +// Thus these overloads. + +MPT_CONSTEXPR20_FUN uint8 SwapBytesImpl(uint8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN int8 SwapBytesImpl(int8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN char SwapBytesImpl(char value) noexcept { + return value; +} + +#undef MPT_bswap16 +#undef MPT_bswap32 +#undef MPT_bswap64 + + + +// On-disk integer types with defined endianness and no alignemnt requirements +// Note: To easily debug module loaders (and anything else that uses this +// wrapper struct), you can use the Debugger Visualizers available in +// build/vs/debug/ to conveniently view the wrapped contents. + +template +struct packed { +public: + using base_type = T; + using endian_type = Tendian; + +public: + std::array data; + +public: + MPT_CONSTEXPR20_FUN void set(base_type val) noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * (sizeof(base_type) - 1 - i))) & 0xffu); + } + } else { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * i)) & 0xffu); + } + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + std::memcpy(data.data(), &val, sizeof(val)); + } else { + using unsigned_base_type = typename std::make_unsigned::type; + data = EndianEncode(val); + } + } + } + MPT_CONSTEXPR20_FUN base_type get() const noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * (sizeof(base_type) - 1 - i)); + } + return static_cast(uval); + } else { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * i); + } + return static_cast(uval); + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + base_type val = base_type(); + std::memcpy(&val, data.data(), sizeof(val)); + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + return val; + } else { + using unsigned_base_type = typename std::make_unsigned::type; + return EndianDecode(data); + } + } + } + MPT_CONSTEXPR20_FUN packed & operator=(const base_type & val) noexcept { + set(val); + return *this; + } + MPT_CONSTEXPR20_FUN operator base_type() const noexcept { + return get(); + } + +public: + MPT_CONSTEXPR20_FUN packed & operator&=(base_type val) noexcept { + set(get() & val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator|=(base_type val) noexcept { + set(get() | val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator^=(base_type val) noexcept { + set(get() ^ val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator+=(base_type val) noexcept { + set(get() + val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator-=(base_type val) noexcept { + set(get() - val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator*=(base_type val) noexcept { + set(get() * val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator/=(base_type val) noexcept { + set(get() / val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator%=(base_type val) noexcept { + set(get() % val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator++() noexcept { // prefix + set(get() + 1); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator--() noexcept { // prefix + set(get() - 1); + return *this; + } + MPT_CONSTEXPR20_FUN base_type operator++(int) noexcept { // postfix + base_type old = get(); + set(old + 1); + return old; + } + MPT_CONSTEXPR20_FUN base_type operator--(int) noexcept { // postfix + base_type old = get(); + set(old - 1); + return old; + } +}; + +using int64le = packed; +using int32le = packed; +using int16le = packed; +using int8le = packed; +using uint64le = packed; +using uint32le = packed; +using uint16le = packed; +using uint8le = packed; + +using int64be = packed; +using int32be = packed; +using int16be = packed; +using int8be = packed; +using uint64be = packed; +using uint32be = packed; +using uint16be = packed; +using uint8be = packed; + +constexpr bool declare_binary_safe(const int64le &) { + return true; +} +constexpr bool declare_binary_safe(const int32le &) { + return true; +} +constexpr bool declare_binary_safe(const int16le &) { + return true; +} +constexpr bool declare_binary_safe(const int8le &) { + return true; +} +constexpr bool declare_binary_safe(const uint64le &) { + return true; +} +constexpr bool declare_binary_safe(const uint32le &) { + return true; +} +constexpr bool declare_binary_safe(const uint16le &) { + return true; +} +constexpr bool declare_binary_safe(const uint8le &) { + return true; +} + +constexpr bool declare_binary_safe(const int64be &) { + return true; +} +constexpr bool declare_binary_safe(const int32be &) { + return true; +} +constexpr bool declare_binary_safe(const int16be &) { + return true; +} +constexpr bool declare_binary_safe(const int8be &) { + return true; +} +constexpr bool declare_binary_safe(const uint64be &) { + return true; +} +constexpr bool declare_binary_safe(const uint32be &) { + return true; +} +constexpr bool declare_binary_safe(const uint16be &) { + return true; +} +constexpr bool declare_binary_safe(const uint8be &) { + return true; +} + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + + + +template +struct make_le { + using type = packed::type, LittleEndian_tag>; +}; + +template +struct make_be { + using type = packed::type, BigEndian_tag>; +}; + +template +MPT_CONSTEXPR20_FUN auto as_le(T v) noexcept -> typename mpt::make_le::type>::type { + typename mpt::make_le::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN auto as_be(T v) noexcept -> typename mpt::make_be::type>::type { + typename mpt::make_be::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN Tpacked as_endian(typename Tpacked::base_type v) noexcept { + Tpacked res{}; + res = v; + return res; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +namespace std { +template +class numeric_limits> : public std::numeric_limits { }; +template +class numeric_limits> : public std::numeric_limits { }; +} // namespace std + + + +#endif // MPT_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_floatingpoint.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_floatingpoint.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_floatingpoint.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/floatingpoint.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace floatingpoint { + +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +{ + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(1.0f), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(-1.0f), 0xbf800000u); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x41840000u), 16.5f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3faa0000u), 1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbfaa0000u), -1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbf800000u), -1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f), IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f), IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00))); + + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(1.0), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(-1.0), 0xbff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x4030800000000000ull), 16.5); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3FF5400000000000ull), 1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xBFF5400000000000ull), -1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xbff0000000000000ull), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0), IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0), IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00))); +} + +} // namespace floatingpoint +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/tests/tests_endian_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_integer.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_integer.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_integer.hpp (working copy) @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace integer { + +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +{ + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + struct test_endian_constexpr { + static MPT_CONSTEXPR20_FUN int32le test(uint32 x) { + int32le foo{}; + foo = x; + return foo; + } + }; + + MPT_CONSTEXPR20_VAR int32le foo = test_endian_constexpr::test(23); + static_cast(foo); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint8(0x12)), 0x12); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint16(0x1234)), 0x3412); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint32(0x12345678u)), 0x78563412u); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint64(0x123456789abcdef0ull)), 0xf0debc9a78563412ull); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int8(std::numeric_limits::min())), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int16(std::numeric_limits::min())), int16(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int32(std::numeric_limits::min())), int32(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int64(std::numeric_limits::min())), int64(0x80)); + + // Packed integers with defined endianness + { + int8le le8; + le8.set(-128); + int8be be8; + be8.set(-128); + MPT_TEST_EXPECT_EQUAL(le8, -128); + MPT_TEST_EXPECT_EQUAL(be8, -128); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le8, "\x80", 1), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be8, "\x80", 1), 0); + int16le le16; + le16.set(0x1234); + int16be be16; + be16.set(0x1234); + MPT_TEST_EXPECT_EQUAL(le16, 0x1234); + MPT_TEST_EXPECT_EQUAL(be16, 0x1234); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le16, "\x34\x12", 2), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be16, "\x12\x34", 2), 0); + uint32le le32; + le32.set(0xFFEEDDCCu); + uint32be be32; + be32.set(0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(le32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(be32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le32, "\xCC\xDD\xEE\xFF", 4), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be32, "\xFF\xEE\xDD\xCC", 4), 0); + uint64le le64; + le64.set(0xDEADC0DE15C0FFEEull); + uint64be be64; + be64.set(0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(le64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(be64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le64, "\xEE\xFF\xC0\x15\xDE\xC0\xAD\xDE", 8), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be64, "\xDE\xAD\xC0\xDE\x15\xC0\xFF\xEE", 8), 0); + } +} + +} // namespace integer +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/tests/tests_endian_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/floatingpoint.hpp =================================================================== --- src/mpt/endian/floatingpoint.hpp (nonexistent) +++ src/mpt/endian/floatingpoint.hpp (working copy) @@ -0,0 +1,441 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/floatingpoint.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// 1.0f --> 0x3f800000u +MPT_FORCEINLINE uint32 EncodeIEEE754binary32(float32 f) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + float m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0f) { + uint32 expo = 0u; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = 0u; + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } else { + uint32 expo = e + 127 - 1; + uint32 sign = std::signbit(m) ? 0x01u : 0x00u; + uint32 mant = static_cast(std::fabs(std::ldexp(m, 24))); + uint32 i = 0u; + i |= (mant << 0) & 0x007fffffu; + i |= (expo << 23) & 0x7f800000u; + i |= (sign << 31) & 0x80000000u; + return i; + } + } +} + +MPT_FORCEINLINE uint64 EncodeIEEE754binary64(float64 f) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(f); + } else { + int e = 0; + double m = std::frexp(f, &e); + if (e == 0 && std::fabs(m) == 0.0) { + uint64 expo = 0u; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = 0u; + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } else { + uint64 expo = static_cast(e) + 1023 - 1; + uint64 sign = std::signbit(m) ? 0x01u : 0x00u; + uint64 mant = static_cast(std::fabs(std::ldexp(m, 53))); + uint64 i = 0u; + i |= (mant << 0) & 0x000fffffffffffffull; + i |= (expo << 52) & 0x7ff0000000000000ull; + i |= (sign << 63) & 0x8000000000000000ull; + return i; + } + } +} + +// 0x3f800000u --> 1.0f +MPT_FORCEINLINE float32 DecodeIEEE754binary32(uint32 i) { + if constexpr (mpt::float_traits::is_ieee754_binary32ne) { + return mpt::bit_cast(i); + } else { + uint32 mant = (i & 0x007fffffu) >> 0; + uint32 expo = (i & 0x7f800000u) >> 23; + uint32 sign = (i & 0x80000000u) >> 31; + if (expo == 0) { + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x00800000u; + float m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 127 + 1 - 24; + float f = std::ldexp(m, e); + return static_cast(f); + } + } +} + +MPT_FORCEINLINE float64 DecodeIEEE754binary64(uint64 i) { + if constexpr (mpt::float_traits::is_ieee754_binary64ne) { + return mpt::bit_cast(i); + } else { + uint64 mant = (i & 0x000fffffffffffffull) >> 0; + uint64 expo = (i & 0x7ff0000000000000ull) >> 52; + uint64 sign = (i & 0x8000000000000000ull) >> 63; + if (expo == 0) { + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } else { + mant |= 0x0010000000000000ull; + double m = sign ? -static_cast(mant) : static_cast(mant); + int e = static_cast(expo) - 1023 + 1 - 53; + double f = std::ldexp(m, e); + return static_cast(f); + } + } +} + + +// template parameters are byte indices corresponding to the individual bytes of iee754 in memory +template +struct IEEE754binary32Emulated { +public: + using self_t = IEEE754binary32Emulated; + std::byte bytes[4]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary32Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary32Emulated(float32 f) { + SetInt32(EncodeIEEE754binary32(f)); + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + } + MPT_FORCEINLINE operator float32() const { + return DecodeIEEE754binary32(GetInt32()); + } + MPT_FORCEINLINE self_t & SetInt32(uint32 i) { + bytes[hihi] = static_cast(i >> 24); + bytes[hilo] = static_cast(i >> 16); + bytes[lohi] = static_cast(i >> 8); + bytes[lolo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return 0u + | (static_cast(bytes[hihi]) << 24) + | (static_cast(bytes[hilo]) << 16) + | (static_cast(bytes[lohi]) << 8) + | (static_cast(bytes[lolo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; +template +struct IEEE754binary64Emulated { +public: + using self_t = IEEE754binary64Emulated; + std::byte bytes[8]; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + return bytes[i]; + } + IEEE754binary64Emulated() = default; + MPT_FORCEINLINE explicit IEEE754binary64Emulated(float64 f) { + SetInt64(EncodeIEEE754binary64(f)); + } + MPT_FORCEINLINE explicit IEEE754binary64Emulated(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + bytes[0] = b0; + bytes[1] = b1; + bytes[2] = b2; + bytes[3] = b3; + bytes[4] = b4; + bytes[5] = b5; + bytes[6] = b6; + bytes[7] = b7; + } + MPT_FORCEINLINE operator float64() const { + return DecodeIEEE754binary64(GetInt64()); + } + MPT_FORCEINLINE self_t & SetInt64(uint64 i) { + bytes[hihihi] = static_cast(i >> 56); + bytes[hihilo] = static_cast(i >> 48); + bytes[hilohi] = static_cast(i >> 40); + bytes[hilolo] = static_cast(i >> 32); + bytes[lohihi] = static_cast(i >> 24); + bytes[lohilo] = static_cast(i >> 16); + bytes[lolohi] = static_cast(i >> 8); + bytes[lololo] = static_cast(i >> 0); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return 0u + | (static_cast(bytes[hihihi]) << 56) + | (static_cast(bytes[hihilo]) << 48) + | (static_cast(bytes[hilohi]) << 40) + | (static_cast(bytes[hilolo]) << 32) + | (static_cast(bytes[lohihi]) << 24) + | (static_cast(bytes[lohilo]) << 16) + | (static_cast(bytes[lolohi]) << 8) + | (static_cast(bytes[lololo]) << 0); + } + MPT_FORCEINLINE bool operator==(const self_t & cmp) const { + return true + && bytes[0] == cmp.bytes[0] + && bytes[1] == cmp.bytes[1] + && bytes[2] == cmp.bytes[2] + && bytes[3] == cmp.bytes[3] + && bytes[4] == cmp.bytes[4] + && bytes[5] == cmp.bytes[5] + && bytes[6] == cmp.bytes[6] + && bytes[7] == cmp.bytes[7]; + } + MPT_FORCEINLINE bool operator!=(const self_t & cmp) const { + return !(*this == cmp); + } +}; + +using IEEE754binary32EmulatedBE = IEEE754binary32Emulated<0, 1, 2, 3>; +using IEEE754binary32EmulatedLE = IEEE754binary32Emulated<3, 2, 1, 0>; +using IEEE754binary64EmulatedBE = IEEE754binary64Emulated<0, 1, 2, 3, 4, 5, 6, 7>; +using IEEE754binary64EmulatedLE = IEEE754binary64Emulated<7, 6, 5, 4, 3, 2, 1, 0>; + +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary32EmulatedLE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedBE &) { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64EmulatedLE &) { + return true; +} + +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(8)); + +template +struct IEEE754binary32Native { +public: + float32 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return static_cast(EncodeIEEE754binary32(value) >> (i * 8)); + } + if constexpr (endian == mpt::endian::big) { + return static_cast(EncodeIEEE754binary32(value) >> ((4 - 1 - i) * 8)); + } + } + IEEE754binary32Native() = default; + MPT_FORCEINLINE explicit IEEE754binary32Native(float32 f) { + value = f; + } + // b0...b3 are in memory order, i.e. depend on the endianness of this type + // little endian: (0x00,0x00,0x80,0x3f) + // big endian: (0x3f,0x80,0x00,0x00) + MPT_FORCEINLINE explicit IEEE754binary32Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary32(0u | (static_cast(b0) << 24) | (static_cast(b1) << 16) | (static_cast(b2) << 8) | (static_cast(b3) << 0)); + } + } + MPT_FORCEINLINE operator float32() const { + return value; + } + MPT_FORCEINLINE IEEE754binary32Native & SetInt32(uint32 i) { + value = DecodeIEEE754binary32(i); + return *this; + } + MPT_FORCEINLINE uint32 GetInt32() const { + return EncodeIEEE754binary32(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary32Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary32Native & cmp) const { + return value != cmp.value; + } +}; + +template +struct IEEE754binary64Native { +public: + float64 value; + +public: + MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> (i * 8))); + } + if constexpr (endian == mpt::endian::big) { + return mpt::byte_cast(static_cast(EncodeIEEE754binary64(value) >> ((8 - 1 - i) * 8))); + } + } + IEEE754binary64Native() = default; + MPT_FORCEINLINE explicit IEEE754binary64Native(float64 f) { + value = f; + } + MPT_FORCEINLINE explicit IEEE754binary64Native(std::byte b0, std::byte b1, std::byte b2, std::byte b3, std::byte b4, std::byte b5, std::byte b6, std::byte b7) { + static_assert(endian == mpt::endian::little || endian == mpt::endian::big); + if constexpr (endian == mpt::endian::little) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 0) | (static_cast(b1) << 8) | (static_cast(b2) << 16) | (static_cast(b3) << 24) | (static_cast(b4) << 32) | (static_cast(b5) << 40) | (static_cast(b6) << 48) | (static_cast(b7) << 56)); + } + if constexpr (endian == mpt::endian::big) { + value = DecodeIEEE754binary64(0ull | (static_cast(b0) << 56) | (static_cast(b1) << 48) | (static_cast(b2) << 40) | (static_cast(b3) << 32) | (static_cast(b4) << 24) | (static_cast(b5) << 16) | (static_cast(b6) << 8) | (static_cast(b7) << 0)); + } + } + MPT_FORCEINLINE operator float64() const { + return value; + } + MPT_FORCEINLINE IEEE754binary64Native & SetInt64(uint64 i) { + value = DecodeIEEE754binary64(i); + return *this; + } + MPT_FORCEINLINE uint64 GetInt64() const { + return EncodeIEEE754binary64(value); + } + MPT_FORCEINLINE bool operator==(const IEEE754binary64Native & cmp) const { + return value == cmp.value; + } + MPT_FORCEINLINE bool operator!=(const IEEE754binary64Native & cmp) const { + return value != cmp.value; + } +}; + +static_assert((sizeof(IEEE754binary32Native<>) == 4)); +static_assert((sizeof(IEEE754binary64Native<>) == 8)); + +constexpr bool declare_binary_safe(const IEEE754binary32Native<> &) noexcept { + return true; +} +constexpr bool declare_binary_safe(const IEEE754binary64Native<> &) noexcept { + return true; +} + +template +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32Native<>; + using IEEE754binary32BE = IEEE754binary32EmulatedBE; + using IEEE754binary64LE = IEEE754binary64Native<>; + using IEEE754binary64BE = IEEE754binary64EmulatedBE; +}; +template <> +struct IEEE754binary_types { + using IEEE754binary32LE = IEEE754binary32EmulatedLE; + using IEEE754binary32BE = IEEE754binary32Native<>; + using IEEE754binary64LE = IEEE754binary64EmulatedLE; + using IEEE754binary64BE = IEEE754binary64Native<>; +}; + +using IEEE754binary32LE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = IEEE754binary_types::is_ieee754_binary32ne, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = IEEE754binary_types::is_ieee754_binary64ne, mpt::endian::native>::IEEE754binary64BE; + +static_assert(sizeof(IEEE754binary32LE) == 4); +static_assert(sizeof(IEEE754binary32BE) == 4); +static_assert(sizeof(IEEE754binary64LE) == 8); +static_assert(sizeof(IEEE754binary64BE) == 8); + + +// unaligned + +using float32le = IEEE754binary32EmulatedLE; +using float32be = IEEE754binary32EmulatedBE; +using float64le = IEEE754binary64EmulatedLE; +using float64be = IEEE754binary64EmulatedBE; + +static_assert(sizeof(float32le) == 4); +static_assert(sizeof(float32be) == 4); +static_assert(sizeof(float64le) == 8); +static_assert(sizeof(float64be) == 8); + + +// potentially aligned + +using float32le_fast = IEEE754binary32LE; +using float32be_fast = IEEE754binary32BE; +using float64le_fast = IEEE754binary64LE; +using float64be_fast = IEEE754binary64BE; + +static_assert(sizeof(float32le_fast) == 4); +static_assert(sizeof(float32be_fast) == 4); +static_assert(sizeof(float64le_fast) == 8); +static_assert(sizeof(float64be_fast) == 8); + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/integer.hpp =================================================================== --- src/mpt/endian/integer.hpp (nonexistent) +++ src/mpt/endian/integer.hpp (working copy) @@ -0,0 +1,487 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/bit.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" + +#include +#include +#include + +#include +#include +#include + +#if MPT_COMPILER_MSVC +#include +#endif + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct BigEndian_tag { + static constexpr mpt::endian endian = mpt::endian::big; +}; + +struct LittleEndian_tag { + static constexpr mpt::endian endian = mpt::endian::little; +}; + + + +constexpr inline uint16 constexpr_bswap16(uint16 x) noexcept { + return uint16(0) + | ((x >> 8) & 0x00FFu) + | ((x << 8) & 0xFF00u); +} + +constexpr inline uint32 constexpr_bswap32(uint32 x) noexcept { + return uint32(0) + | ((x & 0x000000FFu) << 24) + | ((x & 0x0000FF00u) << 8) + | ((x & 0x00FF0000u) >> 8) + | ((x & 0xFF000000u) >> 24); +} + +constexpr inline uint64 constexpr_bswap64(uint64 x) noexcept { + return uint64(0) + | (((x >> 0) & 0xffull) << 56) + | (((x >> 8) & 0xffull) << 48) + | (((x >> 16) & 0xffull) << 40) + | (((x >> 24) & 0xffull) << 32) + | (((x >> 32) & 0xffull) << 24) + | (((x >> 40) & 0xffull) << 16) + | (((x >> 48) & 0xffull) << 8) + | (((x >> 56) & 0xffull) << 0); +} + +#if MPT_COMPILER_GCC +#define MPT_bswap16 __builtin_bswap16 +#define MPT_bswap32 __builtin_bswap32 +#define MPT_bswap64 __builtin_bswap64 +#elif MPT_COMPILER_MSVC +#define MPT_bswap16 _byteswap_ushort +#define MPT_bswap32 _byteswap_ulong +#define MPT_bswap64 _byteswap_uint64 +#endif + +// No intrinsics available +#ifndef MPT_bswap16 +#define MPT_bswap16(x) mpt::constexpr_bswap16(x) +#endif +#ifndef MPT_bswap32 +#define MPT_bswap32(x) mpt::constexpr_bswap32(x) +#endif +#ifndef MPT_bswap64 +#define MPT_bswap64(x) mpt::constexpr_bswap64(x) +#endif + + + +template +MPT_CONSTEXPRINLINE std::array EndianEncode(T val) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + unsigned_base_type uval = static_cast(val); + std::array data{}; + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[(sizeof(base_type) - 1) - i] = static_cast(static_cast((uval >> (i * 8)) & 0xffu)); + } + } + return data; +} + +template +MPT_CONSTEXPRINLINE T EndianDecode(std::array data) noexcept { + static_assert(Tendian::endian == mpt::endian::little || Tendian::endian == mpt::endian::big); + static_assert(std::numeric_limits::is_integer); + static_assert(!std::numeric_limits::is_signed); + static_assert(sizeof(T) == size); + using base_type = T; + using unsigned_base_type = typename std::make_unsigned::type; + using endian_type = Tendian; + base_type val = base_type(); + unsigned_base_type uval = unsigned_base_type(); + if constexpr (endian_type::endian == mpt::endian::little) { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[i])) << (i * 8); + } + } else { + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast(static_cast(data[(sizeof(base_type) - 1) - i])) << (i * 8); + } + } + val = static_cast(uval); + return val; +} + + +MPT_CONSTEXPR20_FUN uint64 SwapBytesImpl(uint64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN uint32 SwapBytesImpl(uint32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN uint16 SwapBytesImpl(uint16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +MPT_CONSTEXPR20_FUN int64 SwapBytesImpl(int64 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap64(value); + } + else { + return MPT_bswap64(value); + } +} + +MPT_CONSTEXPR20_FUN int32 SwapBytesImpl(int32 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap32(value); + } + else { + return MPT_bswap32(value); + } +} + +MPT_CONSTEXPR20_FUN int16 SwapBytesImpl(int16 value) noexcept { + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + return mpt::constexpr_bswap16(value); + } + else { + return MPT_bswap16(value); + } +} + +// Do NOT remove these overloads, even if they seem useless. +// We do not want risking to extend 8bit integers to int and then +// endian-converting and casting back to int. +// Thus these overloads. + +MPT_CONSTEXPR20_FUN uint8 SwapBytesImpl(uint8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN int8 SwapBytesImpl(int8 value) noexcept { + return value; +} + +MPT_CONSTEXPR20_FUN char SwapBytesImpl(char value) noexcept { + return value; +} + +#undef MPT_bswap16 +#undef MPT_bswap32 +#undef MPT_bswap64 + + + +// On-disk integer types with defined endianness and no alignemnt requirements +// Note: To easily debug module loaders (and anything else that uses this +// wrapper struct), you can use the Debugger Visualizers available in +// build/vs/debug/ to conveniently view the wrapped contents. + +template +struct packed { +public: + using base_type = T; + using endian_type = Tendian; + +public: + std::array data; + +public: + MPT_CONSTEXPR20_FUN void set(base_type val) noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * (sizeof(base_type) - 1 - i))) & 0xffu); + } + } else { + typename std::make_unsigned::type uval = val; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + data[i] = static_cast((uval >> (8 * i)) & 0xffu); + } + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + std::memcpy(data.data(), &val, sizeof(val)); + } else { + using unsigned_base_type = typename std::make_unsigned::type; + data = EndianEncode(val); + } + } + } + MPT_CONSTEXPR20_FUN base_type get() const noexcept { + static_assert(std::numeric_limits::is_integer); + MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { + if constexpr (endian_type::endian == mpt::endian::big) { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * (sizeof(base_type) - 1 - i)); + } + return static_cast(uval); + } else { + typename std::make_unsigned::type uval = 0; + for (std::size_t i = 0; i < sizeof(base_type); ++i) { + uval |= static_cast::type>(data[i]) << (8 * i); + } + return static_cast(uval); + } + } + else { + if constexpr (mpt::endian::native == mpt::endian::little || mpt::endian::native == mpt::endian::big) { + base_type val = base_type(); + std::memcpy(&val, data.data(), sizeof(val)); + if constexpr (mpt::endian::native != endian_type::endian) { + val = mpt::SwapBytesImpl(val); + } + return val; + } else { + using unsigned_base_type = typename std::make_unsigned::type; + return EndianDecode(data); + } + } + } + MPT_CONSTEXPR20_FUN packed & operator=(const base_type & val) noexcept { + set(val); + return *this; + } + MPT_CONSTEXPR20_FUN operator base_type() const noexcept { + return get(); + } + +public: + MPT_CONSTEXPR20_FUN packed & operator&=(base_type val) noexcept { + set(get() & val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator|=(base_type val) noexcept { + set(get() | val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator^=(base_type val) noexcept { + set(get() ^ val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator+=(base_type val) noexcept { + set(get() + val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator-=(base_type val) noexcept { + set(get() - val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator*=(base_type val) noexcept { + set(get() * val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator/=(base_type val) noexcept { + set(get() / val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator%=(base_type val) noexcept { + set(get() % val); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator++() noexcept { // prefix + set(get() + 1); + return *this; + } + MPT_CONSTEXPR20_FUN packed & operator--() noexcept { // prefix + set(get() - 1); + return *this; + } + MPT_CONSTEXPR20_FUN base_type operator++(int) noexcept { // postfix + base_type old = get(); + set(old + 1); + return old; + } + MPT_CONSTEXPR20_FUN base_type operator--(int) noexcept { // postfix + base_type old = get(); + set(old - 1); + return old; + } +}; + +using int64le = packed; +using int32le = packed; +using int16le = packed; +using int8le = packed; +using uint64le = packed; +using uint32le = packed; +using uint16le = packed; +using uint8le = packed; + +using int64be = packed; +using int32be = packed; +using int16be = packed; +using int8be = packed; +using uint64be = packed; +using uint32be = packed; +using uint16be = packed; +using uint8be = packed; + +constexpr bool declare_binary_safe(const int64le &) { + return true; +} +constexpr bool declare_binary_safe(const int32le &) { + return true; +} +constexpr bool declare_binary_safe(const int16le &) { + return true; +} +constexpr bool declare_binary_safe(const int8le &) { + return true; +} +constexpr bool declare_binary_safe(const uint64le &) { + return true; +} +constexpr bool declare_binary_safe(const uint32le &) { + return true; +} +constexpr bool declare_binary_safe(const uint16le &) { + return true; +} +constexpr bool declare_binary_safe(const uint8le &) { + return true; +} + +constexpr bool declare_binary_safe(const int64be &) { + return true; +} +constexpr bool declare_binary_safe(const int32be &) { + return true; +} +constexpr bool declare_binary_safe(const int16be &) { + return true; +} +constexpr bool declare_binary_safe(const int8be &) { + return true; +} +constexpr bool declare_binary_safe(const uint64be &) { + return true; +} +constexpr bool declare_binary_safe(const uint32be &) { + return true; +} +constexpr bool declare_binary_safe(const uint16be &) { + return true; +} +constexpr bool declare_binary_safe(const uint8be &) { + return true; +} + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); +static_assert(mpt::check_binary_size(8)); +static_assert(mpt::check_binary_size(4)); +static_assert(mpt::check_binary_size(2)); +static_assert(mpt::check_binary_size(1)); + + + +template +struct make_le { + using type = packed::type, LittleEndian_tag>; +}; + +template +struct make_be { + using type = packed::type, BigEndian_tag>; +}; + +template +MPT_CONSTEXPR20_FUN auto as_le(T v) noexcept -> typename mpt::make_le::type>::type { + typename mpt::make_le::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN auto as_be(T v) noexcept -> typename mpt::make_be::type>::type { + typename mpt::make_be::type>::type res{}; + res = v; + return res; +} + +template +MPT_CONSTEXPR20_FUN Tpacked as_endian(typename Tpacked::base_type v) noexcept { + Tpacked res{}; + res = v; + return res; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +namespace std { +template +class numeric_limits> : public std::numeric_limits { }; +template +class numeric_limits> : public std::numeric_limits { }; +} // namespace std + + + +#endif // MPT_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_floatingpoint.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_floatingpoint.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_floatingpoint.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/floatingpoint.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace floatingpoint { + +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +{ + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(1.0f), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(-1.0f), 0xbf800000u); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x41840000u), 16.5f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3faa0000u), 1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbfaa0000u), -1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbf800000u), -1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f), IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f), IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00))); + + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(1.0), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(-1.0), 0xbff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x4030800000000000ull), 16.5); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3FF5400000000000ull), 1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xBFF5400000000000ull), -1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xbff0000000000000ull), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0), IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0), IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00))); +} + +} // namespace floatingpoint +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/tests/tests_endian_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_integer.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_integer.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_integer.hpp (working copy) @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace integer { + +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +{ + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + struct test_endian_constexpr { + static MPT_CONSTEXPR20_FUN int32le test(uint32 x) { + int32le foo{}; + foo = x; + return foo; + } + }; + + MPT_CONSTEXPR20_VAR int32le foo = test_endian_constexpr::test(23); + static_cast(foo); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint8(0x12)), 0x12); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint16(0x1234)), 0x3412); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint32(0x12345678u)), 0x78563412u); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint64(0x123456789abcdef0ull)), 0xf0debc9a78563412ull); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int8(std::numeric_limits::min())), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int16(std::numeric_limits::min())), int16(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int32(std::numeric_limits::min())), int32(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int64(std::numeric_limits::min())), int64(0x80)); + + // Packed integers with defined endianness + { + int8le le8; + le8.set(-128); + int8be be8; + be8.set(-128); + MPT_TEST_EXPECT_EQUAL(le8, -128); + MPT_TEST_EXPECT_EQUAL(be8, -128); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le8, "\x80", 1), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be8, "\x80", 1), 0); + int16le le16; + le16.set(0x1234); + int16be be16; + be16.set(0x1234); + MPT_TEST_EXPECT_EQUAL(le16, 0x1234); + MPT_TEST_EXPECT_EQUAL(be16, 0x1234); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le16, "\x34\x12", 2), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be16, "\x12\x34", 2), 0); + uint32le le32; + le32.set(0xFFEEDDCCu); + uint32be be32; + be32.set(0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(le32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(be32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le32, "\xCC\xDD\xEE\xFF", 4), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be32, "\xFF\xEE\xDD\xCC", 4), 0); + uint64le le64; + le64.set(0xDEADC0DE15C0FFEEull); + uint64be be64; + be64.set(0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(le64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(be64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le64, "\xEE\xFF\xC0\x15\xDE\xC0\xAD\xDE", 8), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be64, "\xDE\xAD\xC0\xDE\x15\xC0\xFF\xEE", 8), 0); + } +} + +} // namespace integer +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/tests/tests_endian_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_floatingpoint.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_floatingpoint.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_floatingpoint.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP + + + +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/floatingpoint.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace floatingpoint { + +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +{ + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(1.0f), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary32(-1.0f), 0xbf800000u); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x41840000u), 16.5f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3faa0000u), 1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbfaa0000u), -1.328125f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x00000000u), 0.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0xbf800000u), -1.0f); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary32(0x3f800000u), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f).GetInt32(), 0x3f800000u); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0f); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32LE(1.0f), IEEE754binary32LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x80), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary32BE(1.0f), IEEE754binary32BE(mpt::as_byte(0x3f), mpt::as_byte(0x80), mpt::as_byte(0x00), mpt::as_byte(0x00))); + + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(1.0), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::EncodeIEEE754binary64(-1.0), 0xbff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x4030800000000000ull), 16.5); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3FF5400000000000ull), 1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xBFF5400000000000ull), -1.328125); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x0000000000000000ull), 0.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0xbff0000000000000ull), -1.0); + MPT_TEST_EXPECT_EQUAL(mpt::DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0).GetInt64(), 0x3ff0000000000000ull); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00)), 1.0); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64LE(1.0), IEEE754binary64LE(mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0xf0), mpt::as_byte(0x3f))); + MPT_TEST_EXPECT_EQUAL(IEEE754binary64BE(1.0), IEEE754binary64BE(mpt::as_byte(0x3f), mpt::as_byte(0xf0), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00), mpt::as_byte(0x00))); +} + +} // namespace floatingpoint +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_FLOATINGPOINT_HPP Property changes on: src/mpt/endian/tests/tests_endian_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/endian/tests/tests_endian_integer.hpp =================================================================== --- src/mpt/endian/tests/tests_endian_integer.hpp (nonexistent) +++ src/mpt/endian/tests/tests_endian_integer.hpp (working copy) @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP +#define MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP + + + +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace endian { +namespace integer { + +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +{ + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + static_assert(std::numeric_limits::min() == std::numeric_limits::min()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + static_assert(std::numeric_limits::max() == std::numeric_limits::max()); + + struct test_endian_constexpr { + static MPT_CONSTEXPR20_FUN int32le test(uint32 x) { + int32le foo{}; + foo = x; + return foo; + } + }; + + MPT_CONSTEXPR20_VAR int32le foo = test_endian_constexpr::test(23); + static_cast(foo); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint8(0x12)), 0x12); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint16(0x1234)), 0x3412); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint32(0x12345678u)), 0x78563412u); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(uint64(0x123456789abcdef0ull)), 0xf0debc9a78563412ull); + + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int8(std::numeric_limits::min())), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int16(std::numeric_limits::min())), int16(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int32(std::numeric_limits::min())), int32(0x80)); + MPT_TEST_EXPECT_EQUAL(mpt::SwapBytesImpl(int64(std::numeric_limits::min())), int64(0x80)); + + // Packed integers with defined endianness + { + int8le le8; + le8.set(-128); + int8be be8; + be8.set(-128); + MPT_TEST_EXPECT_EQUAL(le8, -128); + MPT_TEST_EXPECT_EQUAL(be8, -128); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le8, "\x80", 1), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be8, "\x80", 1), 0); + int16le le16; + le16.set(0x1234); + int16be be16; + be16.set(0x1234); + MPT_TEST_EXPECT_EQUAL(le16, 0x1234); + MPT_TEST_EXPECT_EQUAL(be16, 0x1234); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le16, "\x34\x12", 2), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be16, "\x12\x34", 2), 0); + uint32le le32; + le32.set(0xFFEEDDCCu); + uint32be be32; + be32.set(0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(le32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(be32, 0xFFEEDDCCu); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le32, "\xCC\xDD\xEE\xFF", 4), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be32, "\xFF\xEE\xDD\xCC", 4), 0); + uint64le le64; + le64.set(0xDEADC0DE15C0FFEEull); + uint64be be64; + be64.set(0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(le64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(be64, 0xDEADC0DE15C0FFEEull); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&le64, "\xEE\xFF\xC0\x15\xDE\xC0\xAD\xDE", 8), 0); + MPT_TEST_EXPECT_EQUAL(std::memcmp(&be64, "\xDE\xAD\xC0\xDE\x15\xC0\xFF\xEE", 8), 0); + } +} + +} // namespace integer +} // namespace endian +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENDIAN_TESTS_ENDIAN_INTEGER_HPP Property changes on: src/mpt/endian/tests/tests_endian_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/environment/environment.hpp =================================================================== --- src/mpt/environment/environment.hpp (nonexistent) +++ src/mpt/environment/environment.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENVIRONMENT_ENVIRONMENT_HPP +#define MPT_ENVIRONMENT_ENVIRONMENT_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/system_error/system_error.hpp" + +#include +#if MPT_OS_WINDOWS +#if defined(UNICODE) && !MPT_OS_WINDOWS_WINRT +#include +#endif // !MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::optional getenv(const mpt::ustring & env_var) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT + MPT_UNUSED(env_var); + return std::nullopt; +#elif MPT_OS_WINDOWS && defined(UNICODE) + std::vector buf(32767); + DWORD size = GetEnvironmentVariable(mpt::convert(env_var).c_str(), buf.data(), 32767); + if (size == 0) { + mpt::windows::ExpectError(ERROR_ENVVAR_NOT_FOUND); + return std::nullopt; + } + return mpt::convert(buf.data()); +#else + const char * val = std::getenv(mpt::convert(mpt::environment_encoding, env_var).c_str()); + if (!val) { + return std::nullopt; + } + return mpt::convert(mpt::environment_encoding, val); +#endif +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENVIRONMENT_ENVIRONMENT_HPP Property changes on: src/mpt/environment/environment.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/environment/environment.hpp =================================================================== --- src/mpt/environment/environment.hpp (nonexistent) +++ src/mpt/environment/environment.hpp (working copy) @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_ENVIRONMENT_ENVIRONMENT_HPP +#define MPT_ENVIRONMENT_ENVIRONMENT_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/system_error/system_error.hpp" + +#include +#if MPT_OS_WINDOWS +#if defined(UNICODE) && !MPT_OS_WINDOWS_WINRT +#include +#endif // !MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::optional getenv(const mpt::ustring & env_var) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT + MPT_UNUSED(env_var); + return std::nullopt; +#elif MPT_OS_WINDOWS && defined(UNICODE) + std::vector buf(32767); + DWORD size = GetEnvironmentVariable(mpt::convert(env_var).c_str(), buf.data(), 32767); + if (size == 0) { + mpt::windows::ExpectError(ERROR_ENVVAR_NOT_FOUND); + return std::nullopt; + } + return mpt::convert(buf.data()); +#else + const char * val = std::getenv(mpt::convert(mpt::environment_encoding, env_var).c_str()); + if (!val) { + return std::nullopt; + } + return mpt::convert(mpt::environment_encoding, val); +#endif +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_ENVIRONMENT_ENVIRONMENT_HPP Property changes on: src/mpt/environment/environment.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/exception_text/exception_text.hpp =================================================================== --- src/mpt/exception_text/exception_text.hpp (nonexistent) +++ src/mpt/exception_text/exception_text.hpp (working copy) @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP +#define MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline Tstring get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return mpt::convert(mpt::exception_string{e.what()}); + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return mpt::convert(mpt::source_string{typeid(e).name()}); + } else { + return mpt::convert(mpt::source_string{"unknown exception name"}); + } +} + +template <> +inline std::string get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return std::string{e.what()}; + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return std::string{typeid(e).name()}; + } else { + return std::string{"unknown exception name"}; + } +} + + +template +inline Tstring get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return mpt::convert(mpt::source_string{"unknown exception"}); + } +} + +template <> +inline std::string get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return std::string{"unknown exception"}; + } +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP Property changes on: src/mpt/exception_text/exception_text.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/exception_text/exception_text.hpp =================================================================== --- src/mpt/exception_text/exception_text.hpp (nonexistent) +++ src/mpt/exception_text/exception_text.hpp (working copy) @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP +#define MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline Tstring get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return mpt::convert(mpt::exception_string{e.what()}); + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return mpt::convert(mpt::source_string{typeid(e).name()}); + } else { + return mpt::convert(mpt::source_string{"unknown exception name"}); + } +} + +template <> +inline std::string get_exception_text(const std::exception & e) { + if (e.what() && (std::strlen(e.what()) > 0)) { + return std::string{e.what()}; + } else if (typeid(e).name() && (std::strlen(typeid(e).name()) > 0)) { + return std::string{typeid(e).name()}; + } else { + return std::string{"unknown exception name"}; + } +} + + +template +inline Tstring get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return mpt::convert(mpt::source_string{"unknown exception"}); + } +} + +template <> +inline std::string get_current_exception_text() { + try { + throw; + } catch (const std::exception & e) { + return mpt::get_exception_text(e); + } catch (...) { + return std::string{"unknown exception"}; + } +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_EXCEPTION_TEXT_EXCEPTION_TEXT_HPP Property changes on: src/mpt/exception_text/exception_text.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_floatingpoint.hpp =================================================================== --- src/mpt/format/default_floatingpoint.hpp (nonexistent) +++ src/mpt/format/default_floatingpoint.hpp (working copy) @@ -0,0 +1,91 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP +#define MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" + +#if MPT_MSVC_AT_LEAST(2019, 4) || MPT_GCC_AT_LEAST(11, 1, 0) +#define MPT_FORMAT_CXX17_FLOAT 1 +#else +#define MPT_FORMAT_CXX17_FLOAT 0 +#endif + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} +#endif + + +#if !MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + s << std::setprecision(std::numeric_limits::max_digits10) << x; + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP Property changes on: src/mpt/format/default_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_formatter.hpp =================================================================== --- src/mpt/format/default_formatter.hpp (nonexistent) +++ src/mpt/format/default_formatter.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_FORMATTER_HPP +#define MPT_FORMAT_DEFAULT_FORMATTER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/default_integer.hpp" +#include "mpt/format/default_string.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct default_formatter { + template + static inline Tstring format(const T & value) { + using namespace mpt; + return format_value_default(value); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_FORMATTER_HPP Property changes on: src/mpt/format/default_formatter.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_integer.hpp =================================================================== --- src/mpt/format/default_integer.hpp (nonexistent) +++ src/mpt/format/default_integer.hpp (working copy) @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_INTEGER_HPP +#define MPT_FORMAT_DEFAULT_INTEGER_HPP + + +#include "mpt/base/detect.hpp" + +#if 1 +#define MPT_FORMAT_CXX17_INT 1 +#else +#define MPT_FORMAT_CXX17_INT 0 +#endif + +#if MPT_FORMAT_CXX17_INT +#include "mpt/base/algorithm.hpp" +#endif // MPT_FORMAT_CXX17_INT +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#if !MPT_FORMAT_CXX17_INT +#include +#include +#include +#endif // !MPT_FORMAT_CXX17_INT +#include +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x)); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} + +#endif // MPT_FORMAT_CXX17_INT + + +#if !MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + if constexpr (std::is_same::value) { + s << static_cast(x); + } else if constexpr (mpt::is_character::value) { + s << (x + 0); // force integral promotion + } else { + s << x; + } + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} + +#endif // !MPT_FORMAT_CXX17_INT + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_INTEGER_HPP Property changes on: src/mpt/format/default_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_string.hpp =================================================================== --- src/mpt/format/default_string.hpp (nonexistent) +++ src/mpt/format/default_string.hpp (working copy) @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_STRING_HPP +#define MPT_FORMAT_DEFAULT_STRING_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline auto format_value_default(const T & x) -> decltype(mpt::convert(x)) { + return mpt::convert(x); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_STRING_HPP Property changes on: src/mpt/format/default_string.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/helpers.hpp =================================================================== --- src/mpt/format/helpers.hpp (nonexistent) +++ src/mpt/format/helpers.hpp (working copy) @@ -0,0 +1,106 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_HELPERS_HPP +#define MPT_FORMAT_HELPERS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline Tdststring convert_formatted_simple(const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return src; + } else { + Tdststring dst; + dst.reserve(src.length()); + for (std::size_t i = 0; i < src.length(); ++i) { + dst.push_back(mpt::unsafe_char_convert(src[i])); + } + return dst; + } +} + + +template +struct select_format_char_type { + using type = char; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#if MPT_USTRING_MODE_WIDE +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // C++20 +template <> +struct select_format_char_type { + using type = wchar_t; +}; +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // MPT_USTRING_MODE_WIDE +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + +template +struct select_format_string_type { + using type = mpt::ustring; +}; + +template <> +struct select_format_string_type { + using type = std::string; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_string_type { + using type = std::wstring; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_string_type { + using type = std::u8string; +}; +#endif // C++20 + +template <> +struct select_format_string_type { + using type = std::u16string; +}; + +template <> +struct select_format_string_type { + using type = std::u32string; +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_HELPERS_HPP Property changes on: src/mpt/format/helpers.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message.hpp =================================================================== --- src/mpt/format/message.hpp (nonexistent) +++ src/mpt/format/message.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class format_message_syntax_error + : public std::domain_error { +public: + format_message_syntax_error() + : std::domain_error("format string syntax error") { + return; + } +}; + +template +class message_formatter { + +public: + using Tstring = typename mpt::make_string_type::type; + +private: + Tstring format; + +private: + MPT_NOINLINE Tstring do_format(const mpt::span vals) const { + using traits = typename mpt::string_traits; + using char_type = typename traits::char_type; + using size_type = typename traits::size_type; + Tstring result; + const size_type len = traits::length(format); + traits::reserve(result, len); + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (size_type pos = 0; pos != len; ++pos) { + char_type c = format[pos]; + switch (state) { + case state::text: + if (c == char_type('{')) { + state = state::open_seen; + } else if (c == char_type('}')) { + state = state::close_seen; + } else { + state = state::text; + traits::append(result, 1, c); // output c here + } + break; + case state::open_seen: + if (c == char_type('{')) { + state = state::text; + traits::append(result, 1, char_type('{')); // output { here + } else if (c == char_type('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - char_type('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + this_arg = current_arg + 1; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - char_type('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + traits::append(result, 1, char_type('}')); // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + return result; + } + +public: + MPT_FORCEINLINE message_formatter(Tstring format_) + : format(std::move(format_)) { + } + +public: + template + MPT_NOINLINE Tstring operator()(Ts &&... xs) const { + const std::array vals{{Tformatter::template format(std::forward(xs))...}}; + return do_format(mpt::as_span(vals)); + } + +}; // struct message_formatter + + +template +class message_formatter_counted { + +private: + message_formatter formatter; + +public: + template + inline message_formatter_counted(const Tchar (&format)[literal_length]) + : formatter(Tstring(format)) { + return; + } + +public: + template + inline Tstring operator()(Ts &&... xs) const { + static_assert(static_cast(sizeof...(xs)) == N); + return formatter(std::forward(xs)...); + } + +}; // struct message_formatter_counted + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count_impl(const Tchar * const format, const std::size_t len) { + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (std::size_t pos = 0; pos != len; ++pos) { + Tchar c = format[pos]; + switch (state) { + case state::text: + if (c == Tchar('{')) { + state = state::open_seen; + } else if (c == Tchar('}')) { + state = state::close_seen; + } else { + state = state::text; + // output c here + } + break; + case state::open_seen: + if (c == Tchar('{')) { + state = state::text; + // output { here + } else if (c == Tchar('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + // output this_arg here + if (this_arg > max_arg) + { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - Tchar('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + this_arg = current_arg + 1; + // output this_arg here + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - Tchar('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + if (max_arg != args) { + throw format_message_syntax_error(); + } + return max_arg; +} + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count(const Tchar (&format)[literal_length]) { + return parse_format_string_argument_count_impl(format, literal_length - 1); +} + + +template +inline auto format_message(const Tchar (&format)[N]) { + using Tstring = typename mpt::make_string_type::type; + return message_formatter_counted(format); +} + +template +inline auto format_message_typed(const Tchar (&format)[N]) { + return message_formatter_counted(format); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message_macros.hpp =================================================================== --- src/mpt/format/message_macros.hpp (nonexistent) +++ src/mpt/format/message_macros.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_MACROS_HPP +#define MPT_FORMAT_MESSAGE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/message.hpp" + + + +#define MPT_FORMAT_MESSAGE(f) mpt::format_message(f) + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#define MPT_WFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#define MPT_UFORMAT_MESSAGE(f) mpt::format_message_typed(MPT_ULITERAL(f)) + +#define MPT_LFORMAT_MESSAGE(f) mpt::format_message_typed(f) + +#if MPT_OS_WINDOWS +#define MPT_TFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_OS_WINDOWS + +#if MPT_DETECTED_MFC +#define MPT_CWFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#define MPT_CAFORMAT_MESSAGE(f) mpt::format_message_typed(f) +#define MPT_CFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_DETECTED_MFC + + + +#endif // MPT_FORMAT_MESSAGE_MACROS_HPP Property changes on: src/mpt/format/message_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple.hpp =================================================================== --- src/mpt/format/simple.hpp (nonexistent) +++ src/mpt/format/simple.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/simple_floatingpoint.hpp" +#include "mpt/format/simple_integer.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string/utility.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +struct format : format_simple_base { + + template + static inline Tstring val(const T & x) { + return mpt::default_formatter::format(x); + } + + template + static inline Tstring fmt(const T & x, const format_simple_spec & f) { + return mpt::format_simple(x, f); + } + + template + static inline Tstring dec(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff()); + } + template + static inline Tstring dec0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width)); + } + + template + static inline Tstring dec(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring dec0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring hex(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff()); + } + template + static inline Tstring HEX(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff()); + } + template + static inline Tstring hex0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width)); + } + template + static inline Tstring HEX0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width)); + } + + template + static inline Tstring hex(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring HEX(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring hex0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width).Group(g).GroupSep(s)); + } + template + static inline Tstring HEX0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring flt(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaNrm().FillOff().Precision(precision)); + } + template + static inline Tstring fix(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaFix().FillOff().Precision(precision)); + } + template + static inline Tstring sci(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaSci().FillOff().Precision(precision)); + } + + template + static inline Tstring ptr(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return hex0(mpt::pointer_cast(x)); + } + template + static inline Tstring PTR(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return HEX0(mpt::pointer_cast(x)); + } + + static inline Tstring pad_left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, width, 0); + } + static inline Tstring pad_right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, 0, width); + } + static inline Tstring left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, 0, width - traits::length(str)) : str; + } + static inline Tstring right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, width - traits::length(str), 0) : str; + } + static inline Tstring center(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, (width - traits::length(str)) / 2, (width - traits::length(str) + 1) / 2) : str; + } + +}; // struct format + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_floatingpoint.hpp =================================================================== --- src/mpt/format/simple_floatingpoint.hpp (nonexistent) +++ src/mpt/format/simple_floatingpoint.hpp (working copy) @@ -0,0 +1,241 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP +#define MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP + + + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#endif +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_FORMAT_CXX17_FLOAT + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt, int precision) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt, precision); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template +inline Tstring format_simple_floatingpoint_postprocess_width(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() - std::distance(str.begin(), pos) < width) { + str.insert(pos, width - str.length() - std::distance(str.begin(), pos), '0'); + } + } else { + if (str.length() < width) { + str.insert(0, width - str.length(), ' '); + } + } + return str; +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & f) { + using format_string_type = typename mpt::select_format_string_type::type; + if (f.GetPrecision() != -1) { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific, f.GetPrecision()), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed, f.GetPrecision()), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general, f.GetPrecision()), f)); + } + } else { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general), f)); + } + } +} + + +#else // !MPT_FORMAT_CXX17_FLOAT + + +template +struct NumPunct : std::numpunct { +private: + unsigned int group; + char sep; + +public: + NumPunct(unsigned int g, char s) + : group(g) + , sep(s) { } + std::string do_grouping() const override { + return std::string(1, static_cast(group)); + } + Tchar do_thousands_sep() const override { + return static_cast(sep); + } +}; + +template +inline void format_simple_floatingpoint_apply_stream_format(Tostream & o, const format_simple_spec & format, const T &) { + if (format.GetGroup() > 0) + { + o.imbue(std::locale(o.getloc(), new NumPunct(format.GetGroup(), format.GetGroupSep()))); + } + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + int precision = format.GetPrecision(); + if (precision != -1 && width != 0 && !(f & format_simple_base::NotaFix) && !(f & format_simple_base::NotaSci)) + { + // fixup: + // precision behaves differently from .# + // avoid default format when precision and width are set + f &= ~format_simple_base::NotaNrm; + f |= format_simple_base::NotaFix; + } + if (f & format_simple_base::BaseDec) { + o << std::dec; + } else if (f & format_simple_base::BaseHex) { + o << std::hex; + } + if (f & format_simple_base::NotaNrm) { /*nothing*/ + } else if (f & format_simple_base::NotaFix) { + o << std::setiosflags(std::ios::fixed); + } else if (f & format_simple_base::NotaSci) { + o << std::setiosflags(std::ios::scientific); + } + if (f & format_simple_base::CaseLow) { + o << std::nouppercase; + } else if (f & format_simple_base::CaseUpp) { + o << std::uppercase; + } + if (f & format_simple_base::FillOff) { /* nothing */ + } else if (f & format_simple_base::FillNul) { + o << std::setw(width) << std::setfill(typename Tostream::char_type('0')); + } + if (precision != -1) + { + o << std::setprecision(precision); + } else + { + if constexpr (std::is_floating_point::value) + { + if (f & format_simple_base::NotaNrm) + { + o << std::setprecision(std::numeric_limits::max_digits10); + } else if (f & format_simple_base::NotaFix) + { + o << std::setprecision(std::numeric_limits::digits10); + } else if (f & format_simple_base::NotaSci) + { + o << std::setprecision(std::numeric_limits::max_digits10 - 1); + } else + { + o << std::setprecision(std::numeric_limits::max_digits10); + } + } + } +} + + +template +inline Tstring format_simple_floatingpoint_stream(const T & x, const format_simple_spec & f) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + mpt::format_simple_floatingpoint_apply_stream_format(s, f, x); + s << x; + return mpt::convert_formatted_simple(s.str()); +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + return mpt::convert(mpt::format_simple_floatingpoint_stream::type>(x, format)); +} + + + +#endif // MPT_FORMAT_CXX17_FLOAT + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP Property changes on: src/mpt/format/simple_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_integer.hpp =================================================================== --- src/mpt/format/simple_integer.hpp (nonexistent) +++ src/mpt/format/simple_integer.hpp (working copy) @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_INTEGER_HPP +#define MPT_FORMAT_SIMPLE_INTEGER_HPP + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" + +#include +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template ::value, bool> = true> +inline Tstring format_simple_integer_to_chars(const T & x, int base) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x), base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_integer_postprocess_case(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + if (f & format_simple_base::CaseUpp) { + for (auto & c : str) { + if (mpt::unsafe_char_convert('a') <= c && c <= mpt::unsafe_char_convert('z')) { + c -= mpt::unsafe_char_convert('a') - mpt::unsafe_char_convert('A'); + } + } + } + return str; +} + + +template +inline Tstring format_simple_integer_postprocess_digits(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() < width) { + str.insert(pos, width - str.length(), mpt::unsafe_char_convert('0')); + } + } + return str; +} + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4723) // potential divide by 0 +#endif // MPT_COMPILER_MSVC +template +inline Tstring format_simple_integer_postprocess_group(Tstring str, const format_simple_spec & format) { + if (format.GetGroup() > 0) { + const unsigned int groupSize = format.GetGroup(); + const char groupSep = format.GetGroupSep(); + std::size_t len = str.length(); + for (std::size_t n = 0; n < len; ++n) { + if (n > 0 && (n % groupSize) == 0) { + if (!(n == (len - 1) && (str[0] == mpt::unsafe_char_convert('+') || str[0] == mpt::unsafe_char_convert('-')))) { + str.insert(str.begin() + (len - n), 1, mpt::unsafe_char_convert(groupSep)); + } + } + } + } + return str; +} +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + int base = 10; + if (format.GetFlags() & format_simple_base::BaseDec) { + base = 10; + } + if (format.GetFlags() & format_simple_base::BaseHex) { + base = 16; + } + using format_string_type = typename mpt::select_format_string_type::type; + return mpt::convert(mpt::format_simple_integer_postprocess_group(mpt::format_simple_integer_postprocess_digits(mpt::format_simple_integer_postprocess_case(mpt::format_simple_integer_to_chars(x, base), format), format), format)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_INTEGER_HPP Property changes on: src/mpt/format/simple_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_spec.hpp =================================================================== --- src/mpt/format/simple_spec.hpp (nonexistent) +++ src/mpt/format/simple_spec.hpp (working copy) @@ -0,0 +1,218 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_SPEC_HPP +#define MPT_FORMAT_SIMPLE_SPEC_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct format_simple_base { + + enum FormatFlagsEnum + { + BaseDec = 0x0001, // base 10 (integers only) // int+float + BaseHex = 0x0002, // base 16 (integers only) // int+float + CaseLow = 0x0010, // lower case hex digits // int+float + CaseUpp = 0x0020, // upper case hex digits // int+float + FillOff = 0x0100, // do not fill up width // int+float + FillNul = 0x0400, // fill up width with zeros // int+float + NotaNrm = 0x1000, // float: normal/default notation // float + NotaFix = 0x2000, // float: fixed point notation // float + NotaSci = 0x4000, // float: scientific notation // float + }; + +}; // struct format_simple_base + +using format_simple_flags = unsigned int; + +static_assert(sizeof(format_simple_flags) >= sizeof(format_simple_base::FormatFlagsEnum)); + + +class format_simple_spec { +private: + format_simple_flags flags; + std::size_t width; // int+float + int precision; // float + unsigned int group; // int + char group_sep; // int +public: + MPT_CONSTEXPRINLINE format_simple_spec() noexcept + : flags(0), width(0), precision(-1), group(0), group_sep(',') { } + MPT_CONSTEXPRINLINE format_simple_flags GetFlags() const noexcept { + return flags; + } + MPT_CONSTEXPRINLINE std::size_t GetWidth() const noexcept { + return width; + } + MPT_CONSTEXPRINLINE int GetPrecision() const noexcept { + return precision; + } + MPT_CONSTEXPRINLINE unsigned int GetGroup() const noexcept { + return group; + } + MPT_CONSTEXPRINLINE char GetGroupSep() const noexcept { + return group_sep; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetFlags(format_simple_flags f) noexcept { + flags = f; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetWidth(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetPrecision(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroup(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & BaseDec() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseDec; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & BaseHex() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseHex; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseLow() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseLow; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseUpp() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseUpp; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillOff() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillOff; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNul() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillNul; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaNrm() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaNrm; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaFix() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaFix; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaSci() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaSci; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Width(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Prec(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Group(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & GroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Dec() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hex() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Low() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upp() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Off() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nul() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nrm() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Fix() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Sci() noexcept { + return NotaSci(); + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Decimal() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hexadecimal() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Lower() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upper() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNone() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillZero() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatNormal() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatFixed() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatScientific() noexcept { + return NotaSci(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Precision(int p) noexcept { + return Prec(p); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_SPEC_HPP Property changes on: src/mpt/format/simple_spec.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_message.hpp =================================================================== --- src/mpt/format/tests/tests_format_message.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_message.hpp (working copy) @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace message { + +MPT_TEST_GROUP_INLINE("mpt/format/message") +{ + static_assert(mpt::parse_format_string_argument_count("") == 0); + static_assert(mpt::parse_format_string_argument_count("{{") == 0); + static_assert(mpt::parse_format_string_argument_count("}}") == 0); + static_assert(mpt::parse_format_string_argument_count("{}") == 1); + static_assert(mpt::parse_format_string_argument_count("{}{}") == 2); + static_assert(mpt::parse_format_string_argument_count("{0}{1}") == 2); + + // basic + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}{}{}")(1, 2, 3), "123"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}")(1, 2, 3), "321"); + + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}{4}{3}{6}{5}{7}{10}{9}{8}")(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a"), "21043657a98"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE(L"{}{}{}")(1, 2, 3), L"123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + // escaping behviour + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%%")(), "%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}")("a"), "a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%%")("a"), "a%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%1")(), "%1"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%{}")("a"), "%a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%b")(), "%b"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{}}")(), "{}"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{{}}}")("a"), "{a}"); +} + +} // namespace message +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/tests/tests_format_message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_simple.hpp =================================================================== --- src/mpt/format/tests/tests_format_simple.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_simple.hpp (working copy) @@ -0,0 +1,161 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace simple { + +MPT_TEST_GROUP_INLINE("mpt/format/simple") +{ + MPT_TEST_EXPECT_EQUAL(mpt::format::val(1.5f), "1.5"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(true), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(false), "0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(0), "0"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-23), "-23"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(42), "42"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<3>((int32)-1), "-001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex((int32)-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(-0xabcde), "-abcde"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min()), "-80000000"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min() + 1), "-7fffffff"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), "123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), "00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), "123e"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(1), "01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(1), "001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(11), "011"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(-1), "-01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(-1), "-001"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(0xa2345678), MPT_USTRING("0A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(0xa2345678), MPT_USTRING("00A2345678")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), L"123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), L"00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), L"123e"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-87.0f), "-87"); + if (mpt::format::val(-0.5e-6) != "-5e-007" + && mpt::format::val(-0.5e-6) != "-5e-07" + && mpt::format::val(-0.5e-6) != "-5e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-07" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-007") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-005" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-05" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-5" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(58.65403492763) != "58.654034927630001" + && mpt::format::val(58.65403492763) != "58.65403492763") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(58.65403492763, 6), "58.654"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(23.42, 1), "23.4"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(234.2, 1), "234.2"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(2342.0, 1), "2342.0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 2345678), std::string("2;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), std::string("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), std::string("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), MPT_USTRING("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), MPT_USTRING("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', 0xa2345678), MPT_USTRING("0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', 0xa2345678), MPT_USTRING("0:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', 0xa2345678), MPT_USTRING("00:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', 0xa2345678), MPT_USTRING("000:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', -0x12345678), MPT_USTRING("-012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', -0x12345678), MPT_USTRING("-0:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', -0x12345678), MPT_USTRING("-00:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', -0x12345678), MPT_USTRING("-000:012:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0x345678), MPT_USTRING("0:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x345678), MPT_USTRING("-0:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::left(3, "a"), "a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::right(3, "a"), " a"); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(3, "a"), " a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(4, "a"), " a "); + + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), "6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 4), "6.1235"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), L"6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), L"6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), L"6.123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace simple +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/tests/tests_format_simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_floatingpoint.hpp =================================================================== --- src/mpt/format/default_floatingpoint.hpp (nonexistent) +++ src/mpt/format/default_floatingpoint.hpp (working copy) @@ -0,0 +1,91 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP +#define MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP + + + +#include "mpt/base/detect.hpp" + +#if MPT_MSVC_AT_LEAST(2019, 4) || MPT_GCC_AT_LEAST(11, 1, 0) +#define MPT_FORMAT_CXX17_FLOAT 1 +#else +#define MPT_FORMAT_CXX17_FLOAT 0 +#endif + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} +#endif + + +#if !MPT_FORMAT_CXX17_FLOAT +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + s << std::setprecision(std::numeric_limits::max_digits10) << x; + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} +#endif + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DETAULT_FLOATINGPOINT_HPP Property changes on: src/mpt/format/default_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_formatter.hpp =================================================================== --- src/mpt/format/default_formatter.hpp (nonexistent) +++ src/mpt/format/default_formatter.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_FORMATTER_HPP +#define MPT_FORMAT_DEFAULT_FORMATTER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/default_integer.hpp" +#include "mpt/format/default_string.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +struct default_formatter { + template + static inline Tstring format(const T & value) { + using namespace mpt; + return format_value_default(value); + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_FORMATTER_HPP Property changes on: src/mpt/format/default_formatter.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_integer.hpp =================================================================== --- src/mpt/format/default_integer.hpp (nonexistent) +++ src/mpt/format/default_integer.hpp (working copy) @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_INTEGER_HPP +#define MPT_FORMAT_DEFAULT_INTEGER_HPP + + +#include "mpt/base/detect.hpp" + +#if 1 +#define MPT_FORMAT_CXX17_INT 1 +#else +#define MPT_FORMAT_CXX17_INT 0 +#endif + +#if MPT_FORMAT_CXX17_INT +#include "mpt/base/algorithm.hpp" +#endif // MPT_FORMAT_CXX17_INT +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#if !MPT_FORMAT_CXX17_INT +#include +#include +#include +#endif // !MPT_FORMAT_CXX17_INT +#include +#if MPT_FORMAT_CXX17_INT +#include +#endif // MPT_FORMAT_CXX17_INT +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_chars_string(const T & x) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x)); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_chars_string::type>(x)); +} + +#endif // MPT_FORMAT_CXX17_INT + + +#if !MPT_FORMAT_CXX17_INT + +template ::value, bool> = true> +inline Tstring to_stream_string(const T & x) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + if constexpr (std::is_same::value) { + s << static_cast(x); + } else if constexpr (mpt::is_character::value) { + s << (x + 0); // force integral promotion + } else { + s << x; + } + return mpt::convert_formatted_simple(s.str()); +} + +template ::value, bool> = true> +inline Tstring format_value_default(const T & x) { + return mpt::convert(mpt::to_stream_string::type>(x)); +} + +#endif // !MPT_FORMAT_CXX17_INT + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_INTEGER_HPP Property changes on: src/mpt/format/default_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/default_string.hpp =================================================================== --- src/mpt/format/default_string.hpp (nonexistent) +++ src/mpt/format/default_string.hpp (working copy) @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_DEFAULT_STRING_HPP +#define MPT_FORMAT_DEFAULT_STRING_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline auto format_value_default(const T & x) -> decltype(mpt::convert(x)) { + return mpt::convert(x); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_DEFAULT_STRING_HPP Property changes on: src/mpt/format/default_string.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/helpers.hpp =================================================================== --- src/mpt/format/helpers.hpp (nonexistent) +++ src/mpt/format/helpers.hpp (working copy) @@ -0,0 +1,106 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_HELPERS_HPP +#define MPT_FORMAT_HELPERS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +inline Tdststring convert_formatted_simple(const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return src; + } else { + Tdststring dst; + dst.reserve(src.length()); + for (std::size_t i = 0; i < src.length(); ++i) { + dst.push_back(mpt::unsafe_char_convert(src[i])); + } + return dst; + } +} + + +template +struct select_format_char_type { + using type = char; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#if MPT_USTRING_MODE_WIDE +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // C++20 +template <> +struct select_format_char_type { + using type = wchar_t; +}; +template <> +struct select_format_char_type { + using type = wchar_t; +}; +#endif // MPT_USTRING_MODE_WIDE +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + +template +struct select_format_string_type { + using type = mpt::ustring; +}; + +template <> +struct select_format_string_type { + using type = std::string; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct select_format_string_type { + using type = std::wstring; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct select_format_string_type { + using type = std::u8string; +}; +#endif // C++20 + +template <> +struct select_format_string_type { + using type = std::u16string; +}; + +template <> +struct select_format_string_type { + using type = std::u32string; +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_HELPERS_HPP Property changes on: src/mpt/format/helpers.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message.hpp =================================================================== --- src/mpt/format/message.hpp (nonexistent) +++ src/mpt/format/message.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/span.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class format_message_syntax_error + : public std::domain_error { +public: + format_message_syntax_error() + : std::domain_error("format string syntax error") { + return; + } +}; + +template +class message_formatter { + +public: + using Tstring = typename mpt::make_string_type::type; + +private: + Tstring format; + +private: + MPT_NOINLINE Tstring do_format(const mpt::span vals) const { + using traits = typename mpt::string_traits; + using char_type = typename traits::char_type; + using size_type = typename traits::size_type; + Tstring result; + const size_type len = traits::length(format); + traits::reserve(result, len); + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (size_type pos = 0; pos != len; ++pos) { + char_type c = format[pos]; + switch (state) { + case state::text: + if (c == char_type('{')) { + state = state::open_seen; + } else if (c == char_type('}')) { + state = state::close_seen; + } else { + state = state::text; + traits::append(result, 1, c); // output c here + } + break; + case state::open_seen: + if (c == char_type('{')) { + state = state::text; + traits::append(result, 1, char_type('{')); // output { here + } else if (c == char_type('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - char_type('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + this_arg = current_arg + 1; + { // output this_arg here + const std::size_t n = this_arg - 1; + if (n < std::size(vals)) { + traits::append(result, vals[n]); + } + } + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (char_type('0') <= c && c <= char_type('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - char_type('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == char_type('{')) { + state = state::error; + } else if (c == char_type('}')) { + state = state::text; + traits::append(result, 1, char_type('}')); // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + return result; + } + +public: + MPT_FORCEINLINE message_formatter(Tstring format_) + : format(std::move(format_)) { + } + +public: + template + MPT_NOINLINE Tstring operator()(Ts &&... xs) const { + const std::array vals{{Tformatter::template format(std::forward(xs))...}}; + return do_format(mpt::as_span(vals)); + } + +}; // struct message_formatter + + +template +class message_formatter_counted { + +private: + message_formatter formatter; + +public: + template + inline message_formatter_counted(const Tchar (&format)[literal_length]) + : formatter(Tstring(format)) { + return; + } + +public: + template + inline Tstring operator()(Ts &&... xs) const { + static_assert(static_cast(sizeof...(xs)) == N); + return formatter(std::forward(xs)...); + } + +}; // struct message_formatter_counted + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count_impl(const Tchar * const format, const std::size_t len) { + std::size_t max_arg = 0; + std::size_t args = 0; + bool success = true; + enum class state : int + { + error = -1, + text = 0, + open_seen = 1, + number_seen = 2, + close_seen = 3, + }; + state state = state::text; + bool numbered_args = false; + bool unnumbered_args = false; + std::size_t last_arg = 0; + std::size_t this_arg = 0; + std::size_t current_arg = 0; + for (std::size_t pos = 0; pos != len; ++pos) { + Tchar c = format[pos]; + switch (state) { + case state::text: + if (c == Tchar('{')) { + state = state::open_seen; + } else if (c == Tchar('}')) { + state = state::close_seen; + } else { + state = state::text; + // output c here + } + break; + case state::open_seen: + if (c == Tchar('{')) { + state = state::text; + // output { here + } else if (c == Tchar('}')) { + state = state::text; + unnumbered_args = true; + last_arg++; + this_arg = last_arg; + // output this_arg here + if (this_arg > max_arg) + { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = c - Tchar('0'); + } else { + state = state::error; + } + break; + case state::number_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + this_arg = current_arg + 1; + // output this_arg here + if (this_arg > max_arg) { + max_arg = this_arg; + } + args += 1; + } else if (Tchar('0') <= c && c <= Tchar('9')) { + state = state::number_seen; + numbered_args = true; + current_arg = (current_arg * 10) + (c - Tchar('0')); + } else { + state = state::error; + } + break; + case state::close_seen: + if (c == Tchar('{')) { + state = state::error; + } else if (c == Tchar('}')) { + state = state::text; + // output } here + } else { + state = state::error; + } + break; + case state::error: + state = state::error; + break; + } + } + if (state == state::error) { + success = false; + } + if (state != state::text) { + success = false; + } + if (numbered_args && unnumbered_args) { + success = false; + } + if (!success) { + throw format_message_syntax_error(); + } + if (max_arg != args) { + throw format_message_syntax_error(); + } + return max_arg; +} + + +template +MPT_CONSTEXPRINLINE std::ptrdiff_t parse_format_string_argument_count(const Tchar (&format)[literal_length]) { + return parse_format_string_argument_count_impl(format, literal_length - 1); +} + + +template +inline auto format_message(const Tchar (&format)[N]) { + using Tstring = typename mpt::make_string_type::type; + return message_formatter_counted(format); +} + +template +inline auto format_message_typed(const Tchar (&format)[N]) { + return message_formatter_counted(format); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/message_macros.hpp =================================================================== --- src/mpt/format/message_macros.hpp (nonexistent) +++ src/mpt/format/message_macros.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_MESSAGE_MACROS_HPP +#define MPT_FORMAT_MESSAGE_MACROS_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/message.hpp" + + + +#define MPT_FORMAT_MESSAGE(f) mpt::format_message(f) + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#define MPT_WFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#define MPT_UFORMAT_MESSAGE(f) mpt::format_message_typed(MPT_ULITERAL(f)) + +#define MPT_LFORMAT_MESSAGE(f) mpt::format_message_typed(f) + +#if MPT_OS_WINDOWS +#define MPT_TFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_OS_WINDOWS + +#if MPT_DETECTED_MFC +#define MPT_CWFORMAT_MESSAGE(f) mpt::format_message_typed(L##f) +#define MPT_CAFORMAT_MESSAGE(f) mpt::format_message_typed(f) +#define MPT_CFORMAT_MESSAGE(f) mpt::format_message_typed(TEXT(f)) +#endif // MPT_DETECTED_MFC + + + +#endif // MPT_FORMAT_MESSAGE_MACROS_HPP Property changes on: src/mpt/format/message_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple.hpp =================================================================== --- src/mpt/format/simple.hpp (nonexistent) +++ src/mpt/format/simple.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/pointer.hpp" +#include "mpt/format/default_formatter.hpp" +#include "mpt/format/simple_floatingpoint.hpp" +#include "mpt/format/simple_integer.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string/utility.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +struct format : format_simple_base { + + template + static inline Tstring val(const T & x) { + return mpt::default_formatter::format(x); + } + + template + static inline Tstring fmt(const T & x, const format_simple_spec & f) { + return mpt::format_simple(x, f); + } + + template + static inline Tstring dec(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff()); + } + template + static inline Tstring dec0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width)); + } + + template + static inline Tstring dec(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring dec0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseDec().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring hex(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff()); + } + template + static inline Tstring HEX(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff()); + } + template + static inline Tstring hex0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width)); + } + template + static inline Tstring HEX0(const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width)); + } + + template + static inline Tstring hex(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring HEX(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillOff().Group(g).GroupSep(s)); + } + template + static inline Tstring hex0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseLow().FillNul().Width(width).Group(g).GroupSep(s)); + } + template + static inline Tstring HEX0(unsigned int g, char s, const T & x) { + static_assert(std::numeric_limits::is_integer); + return mpt::format_simple(x, format_simple_spec().BaseHex().CaseUpp().FillNul().Width(width).Group(g).GroupSep(s)); + } + + template + static inline Tstring flt(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaNrm().FillOff().Precision(precision)); + } + template + static inline Tstring fix(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaFix().FillOff().Precision(precision)); + } + template + static inline Tstring sci(const T & x, int precision = -1) { + static_assert(std::is_floating_point::value); + return mpt::format_simple(x, format_simple_spec().NotaSci().FillOff().Precision(precision)); + } + + template + static inline Tstring ptr(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return hex0(mpt::pointer_cast(x)); + } + template + static inline Tstring PTR(const T & x) { + static_assert(std::is_pointer::value || std::is_same::value || std::is_same::value, ""); + return HEX0(mpt::pointer_cast(x)); + } + + static inline Tstring pad_left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, width, 0); + } + static inline Tstring pad_right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return traits::pad(str, 0, width); + } + static inline Tstring left(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, 0, width - traits::length(str)) : str; + } + static inline Tstring right(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, width - traits::length(str), 0) : str; + } + static inline Tstring center(std::size_t width_, const Tstring & str) { + typedef mpt::string_traits traits; + typename traits::size_type width = static_cast(width_); + return (traits::length(str) < width) ? traits::pad(str, (width - traits::length(str)) / 2, (width - traits::length(str) + 1) / 2) : str; + } + +}; // struct format + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_floatingpoint.hpp =================================================================== --- src/mpt/format/simple_floatingpoint.hpp (nonexistent) +++ src/mpt/format/simple_floatingpoint.hpp (working copy) @@ -0,0 +1,241 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP +#define MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP + + + +#if MPT_FORMAT_CXX17_FLOAT +#include "mpt/base/algorithm.hpp" +#endif +#include "mpt/base/namespace.hpp" +#include "mpt/format/default_floatingpoint.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" +#include "mpt/string_convert/convert.hpp" + +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#endif +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#if !MPT_FORMAT_CXX17_FLOAT +#include +#include +#include +#endif +#include +#if MPT_FORMAT_CXX17_FLOAT +#include +#endif +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_FORMAT_CXX17_FLOAT + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_floatingpoint_to_chars(const T & x, std::chars_format fmt, int precision) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, fmt, precision); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + return mpt::convert_formatted_simple(str); +} + +template +inline Tstring format_simple_floatingpoint_postprocess_width(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() - std::distance(str.begin(), pos) < width) { + str.insert(pos, width - str.length() - std::distance(str.begin(), pos), '0'); + } + } else { + if (str.length() < width) { + str.insert(0, width - str.length(), ' '); + } + } + return str; +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & f) { + using format_string_type = typename mpt::select_format_string_type::type; + if (f.GetPrecision() != -1) { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific, f.GetPrecision()), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed, f.GetPrecision()), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general, f.GetPrecision()), f)); + } + } else { + if (f.GetFlags() & format_simple_base::NotaSci) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::scientific), f)); + } else if (f.GetFlags() & format_simple_base::NotaFix) { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::fixed), f)); + } else { + return mpt::convert(mpt::format_simple_floatingpoint_postprocess_width(format_simple_floatingpoint_to_chars(x, std::chars_format::general), f)); + } + } +} + + +#else // !MPT_FORMAT_CXX17_FLOAT + + +template +struct NumPunct : std::numpunct { +private: + unsigned int group; + char sep; + +public: + NumPunct(unsigned int g, char s) + : group(g) + , sep(s) { } + std::string do_grouping() const override { + return std::string(1, static_cast(group)); + } + Tchar do_thousands_sep() const override { + return static_cast(sep); + } +}; + +template +inline void format_simple_floatingpoint_apply_stream_format(Tostream & o, const format_simple_spec & format, const T &) { + if (format.GetGroup() > 0) + { + o.imbue(std::locale(o.getloc(), new NumPunct(format.GetGroup(), format.GetGroupSep()))); + } + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + int precision = format.GetPrecision(); + if (precision != -1 && width != 0 && !(f & format_simple_base::NotaFix) && !(f & format_simple_base::NotaSci)) + { + // fixup: + // precision behaves differently from .# + // avoid default format when precision and width are set + f &= ~format_simple_base::NotaNrm; + f |= format_simple_base::NotaFix; + } + if (f & format_simple_base::BaseDec) { + o << std::dec; + } else if (f & format_simple_base::BaseHex) { + o << std::hex; + } + if (f & format_simple_base::NotaNrm) { /*nothing*/ + } else if (f & format_simple_base::NotaFix) { + o << std::setiosflags(std::ios::fixed); + } else if (f & format_simple_base::NotaSci) { + o << std::setiosflags(std::ios::scientific); + } + if (f & format_simple_base::CaseLow) { + o << std::nouppercase; + } else if (f & format_simple_base::CaseUpp) { + o << std::uppercase; + } + if (f & format_simple_base::FillOff) { /* nothing */ + } else if (f & format_simple_base::FillNul) { + o << std::setw(width) << std::setfill(typename Tostream::char_type('0')); + } + if (precision != -1) + { + o << std::setprecision(precision); + } else + { + if constexpr (std::is_floating_point::value) + { + if (f & format_simple_base::NotaNrm) + { + o << std::setprecision(std::numeric_limits::max_digits10); + } else if (f & format_simple_base::NotaFix) + { + o << std::setprecision(std::numeric_limits::digits10); + } else if (f & format_simple_base::NotaSci) + { + o << std::setprecision(std::numeric_limits::max_digits10 - 1); + } else + { + o << std::setprecision(std::numeric_limits::max_digits10); + } + } + } +} + + +template +inline Tstring format_simple_floatingpoint_stream(const T & x, const format_simple_spec & f) { + using stream_char_type = typename mpt::select_format_char_type::type; + std::basic_ostringstream s; + s.imbue(std::locale::classic()); + mpt::format_simple_floatingpoint_apply_stream_format(s, f, x); + s << x; + return mpt::convert_formatted_simple(s.str()); +} + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + return mpt::convert(mpt::format_simple_floatingpoint_stream::type>(x, format)); +} + + + +#endif // MPT_FORMAT_CXX17_FLOAT + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_FLOATINGPOINT_HPP Property changes on: src/mpt/format/simple_floatingpoint.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_integer.hpp =================================================================== --- src/mpt/format/simple_integer.hpp (nonexistent) +++ src/mpt/format/simple_integer.hpp (working copy) @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_INTEGER_HPP +#define MPT_FORMAT_SIMPLE_INTEGER_HPP + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/helpers.hpp" +#include "mpt/format/simple_spec.hpp" + +#include +#include +#include +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template ::value, bool> = true> +inline Tstring format_simple_integer_to_chars(const T & x, int base) { + std::string str(1, '\0'); + bool done = false; + while (!done) { + if constexpr (std::is_same::value) { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), static_cast(x), base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } else { + std::to_chars_result result = std::to_chars(str.data(), str.data() + str.size(), x, base); + if (result.ec != std::errc{}) { + str.resize(mpt::exponential_grow(str.size()), '\0'); + } else { + str.resize(result.ptr - str.data()); + done = true; + } + } + } + return mpt::convert_formatted_simple(str); +} + + +template +inline Tstring format_simple_integer_postprocess_case(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + if (f & format_simple_base::CaseUpp) { + for (auto & c : str) { + if (mpt::unsafe_char_convert('a') <= c && c <= mpt::unsafe_char_convert('z')) { + c -= mpt::unsafe_char_convert('a') - mpt::unsafe_char_convert('A'); + } + } + } + return str; +} + + +template +inline Tstring format_simple_integer_postprocess_digits(Tstring str, const format_simple_spec & format) { + format_simple_flags f = format.GetFlags(); + std::size_t width = format.GetWidth(); + if (f & format_simple_base::FillNul) { + auto pos = str.begin(); + if (str.length() > 0) { + if (str[0] == mpt::unsafe_char_convert('+')) { + pos++; + width++; + } else if (str[0] == mpt::unsafe_char_convert('-')) { + pos++; + width++; + } + } + if (str.length() < width) { + str.insert(pos, width - str.length(), mpt::unsafe_char_convert('0')); + } + } + return str; +} + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4723) // potential divide by 0 +#endif // MPT_COMPILER_MSVC +template +inline Tstring format_simple_integer_postprocess_group(Tstring str, const format_simple_spec & format) { + if (format.GetGroup() > 0) { + const unsigned int groupSize = format.GetGroup(); + const char groupSep = format.GetGroupSep(); + std::size_t len = str.length(); + for (std::size_t n = 0; n < len; ++n) { + if (n > 0 && (n % groupSize) == 0) { + if (!(n == (len - 1) && (str[0] == mpt::unsafe_char_convert('+') || str[0] == mpt::unsafe_char_convert('-')))) { + str.insert(str.begin() + (len - n), 1, mpt::unsafe_char_convert(groupSep)); + } + } + } + } + return str; +} +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + + +template ::value, bool> = true> +inline Tstring format_simple(const T & x, const format_simple_spec & format) { + int base = 10; + if (format.GetFlags() & format_simple_base::BaseDec) { + base = 10; + } + if (format.GetFlags() & format_simple_base::BaseHex) { + base = 16; + } + using format_string_type = typename mpt::select_format_string_type::type; + return mpt::convert(mpt::format_simple_integer_postprocess_group(mpt::format_simple_integer_postprocess_digits(mpt::format_simple_integer_postprocess_case(mpt::format_simple_integer_to_chars(x, base), format), format), format)); +} + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_INTEGER_HPP Property changes on: src/mpt/format/simple_integer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/simple_spec.hpp =================================================================== --- src/mpt/format/simple_spec.hpp (nonexistent) +++ src/mpt/format/simple_spec.hpp (working copy) @@ -0,0 +1,218 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_SIMPLE_SPEC_HPP +#define MPT_FORMAT_SIMPLE_SPEC_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +struct format_simple_base { + + enum FormatFlagsEnum + { + BaseDec = 0x0001, // base 10 (integers only) // int+float + BaseHex = 0x0002, // base 16 (integers only) // int+float + CaseLow = 0x0010, // lower case hex digits // int+float + CaseUpp = 0x0020, // upper case hex digits // int+float + FillOff = 0x0100, // do not fill up width // int+float + FillNul = 0x0400, // fill up width with zeros // int+float + NotaNrm = 0x1000, // float: normal/default notation // float + NotaFix = 0x2000, // float: fixed point notation // float + NotaSci = 0x4000, // float: scientific notation // float + }; + +}; // struct format_simple_base + +using format_simple_flags = unsigned int; + +static_assert(sizeof(format_simple_flags) >= sizeof(format_simple_base::FormatFlagsEnum)); + + +class format_simple_spec { +private: + format_simple_flags flags; + std::size_t width; // int+float + int precision; // float + unsigned int group; // int + char group_sep; // int +public: + MPT_CONSTEXPRINLINE format_simple_spec() noexcept + : flags(0), width(0), precision(-1), group(0), group_sep(',') { } + MPT_CONSTEXPRINLINE format_simple_flags GetFlags() const noexcept { + return flags; + } + MPT_CONSTEXPRINLINE std::size_t GetWidth() const noexcept { + return width; + } + MPT_CONSTEXPRINLINE int GetPrecision() const noexcept { + return precision; + } + MPT_CONSTEXPRINLINE unsigned int GetGroup() const noexcept { + return group; + } + MPT_CONSTEXPRINLINE char GetGroupSep() const noexcept { + return group_sep; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetFlags(format_simple_flags f) noexcept { + flags = f; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetWidth(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetPrecision(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroup(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & SetGroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & BaseDec() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseDec; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & BaseHex() noexcept { + flags &= ~(format_simple_base::BaseDec | format_simple_base::BaseHex); + flags |= format_simple_base::BaseHex; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseLow() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseLow; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & CaseUpp() noexcept { + flags &= ~(format_simple_base::CaseLow | format_simple_base::CaseUpp); + flags |= format_simple_base::CaseUpp; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillOff() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillOff; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNul() noexcept { + flags &= ~(format_simple_base::FillOff | format_simple_base::FillNul); + flags |= format_simple_base::FillNul; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaNrm() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaNrm; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaFix() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaFix; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & NotaSci() noexcept { + flags &= ~(format_simple_base::NotaNrm | format_simple_base::NotaFix | format_simple_base::NotaSci); + flags |= format_simple_base::NotaSci; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Width(std::size_t w) noexcept { + width = w; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Prec(int p) noexcept { + precision = p; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & Group(unsigned int g) noexcept { + group = g; + return *this; + } + MPT_CONSTEXPRINLINE format_simple_spec & GroupSep(char s) noexcept { + group_sep = s; + return *this; + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Dec() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hex() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Low() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upp() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Off() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nul() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Nrm() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Fix() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Sci() noexcept { + return NotaSci(); + } + +public: + MPT_CONSTEXPRINLINE format_simple_spec & Decimal() noexcept { + return BaseDec(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Hexadecimal() noexcept { + return BaseHex(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Lower() noexcept { + return CaseLow(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Upper() noexcept { + return CaseUpp(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillNone() noexcept { + return FillOff(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FillZero() noexcept { + return FillNul(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatNormal() noexcept { + return NotaNrm(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatFixed() noexcept { + return NotaFix(); + } + MPT_CONSTEXPRINLINE format_simple_spec & FloatScientific() noexcept { + return NotaSci(); + } + MPT_CONSTEXPRINLINE format_simple_spec & Precision(int p) noexcept { + return Prec(p); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_SIMPLE_SPEC_HPP Property changes on: src/mpt/format/simple_spec.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_message.hpp =================================================================== --- src/mpt/format/tests/tests_format_message.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_message.hpp (working copy) @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace message { + +MPT_TEST_GROUP_INLINE("mpt/format/message") +{ + static_assert(mpt::parse_format_string_argument_count("") == 0); + static_assert(mpt::parse_format_string_argument_count("{{") == 0); + static_assert(mpt::parse_format_string_argument_count("}}") == 0); + static_assert(mpt::parse_format_string_argument_count("{}") == 1); + static_assert(mpt::parse_format_string_argument_count("{}{}") == 2); + static_assert(mpt::parse_format_string_argument_count("{0}{1}") == 2); + + // basic + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}{}{}")(1, 2, 3), "123"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}")(1, 2, 3), "321"); + + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}{4}{3}{6}{5}{7}{10}{9}{8}")(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a"), "21043657a98"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE(L"{}{}{}")(1, 2, 3), L"123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + // escaping behviour + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%%")(), "%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}")("a"), "a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%%")("a"), "a%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%1")(), "%1"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%{}")("a"), "%a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%b")(), "%b"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{}}")(), "{}"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{{}}}")("a"), "{a}"); +} + +} // namespace message +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/tests/tests_format_message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_simple.hpp =================================================================== --- src/mpt/format/tests/tests_format_simple.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_simple.hpp (working copy) @@ -0,0 +1,161 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace simple { + +MPT_TEST_GROUP_INLINE("mpt/format/simple") +{ + MPT_TEST_EXPECT_EQUAL(mpt::format::val(1.5f), "1.5"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(true), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(false), "0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(0), "0"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-23), "-23"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(42), "42"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<3>((int32)-1), "-001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex((int32)-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(-0xabcde), "-abcde"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min()), "-80000000"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min() + 1), "-7fffffff"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), "123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), "00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), "123e"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(1), "01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(1), "001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(11), "011"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(-1), "-01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(-1), "-001"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(0xa2345678), MPT_USTRING("0A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(0xa2345678), MPT_USTRING("00A2345678")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), L"123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), L"00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), L"123e"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-87.0f), "-87"); + if (mpt::format::val(-0.5e-6) != "-5e-007" + && mpt::format::val(-0.5e-6) != "-5e-07" + && mpt::format::val(-0.5e-6) != "-5e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-07" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-007") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-005" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-05" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-5" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(58.65403492763) != "58.654034927630001" + && mpt::format::val(58.65403492763) != "58.65403492763") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(58.65403492763, 6), "58.654"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(23.42, 1), "23.4"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(234.2, 1), "234.2"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(2342.0, 1), "2342.0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 2345678), std::string("2;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), std::string("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), std::string("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), MPT_USTRING("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), MPT_USTRING("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', 0xa2345678), MPT_USTRING("0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', 0xa2345678), MPT_USTRING("0:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', 0xa2345678), MPT_USTRING("00:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', 0xa2345678), MPT_USTRING("000:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', -0x12345678), MPT_USTRING("-012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', -0x12345678), MPT_USTRING("-0:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', -0x12345678), MPT_USTRING("-00:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', -0x12345678), MPT_USTRING("-000:012:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0x345678), MPT_USTRING("0:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x345678), MPT_USTRING("-0:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::left(3, "a"), "a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::right(3, "a"), " a"); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(3, "a"), " a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(4, "a"), " a "); + + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), "6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 4), "6.1235"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), L"6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), L"6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), L"6.123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace simple +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/tests/tests_format_simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_message.hpp =================================================================== --- src/mpt/format/tests/tests_format_message.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_message.hpp (working copy) @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP +#define MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace message { + +MPT_TEST_GROUP_INLINE("mpt/format/message") +{ + static_assert(mpt::parse_format_string_argument_count("") == 0); + static_assert(mpt::parse_format_string_argument_count("{{") == 0); + static_assert(mpt::parse_format_string_argument_count("}}") == 0); + static_assert(mpt::parse_format_string_argument_count("{}") == 1); + static_assert(mpt::parse_format_string_argument_count("{}{}") == 2); + static_assert(mpt::parse_format_string_argument_count("{0}{1}") == 2); + + // basic + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}{}{}")(1, 2, 3), "123"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}")(1, 2, 3), "321"); + + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{2}{1}{0}{4}{3}{6}{5}{7}{10}{9}{8}")(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a"), "21043657a98"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE(L"{}{}{}")(1, 2, 3), L"123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + // escaping behviour + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%")(), "%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%%")(), "%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}")("a"), "a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%")("a"), "a%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{}%%")("a"), "a%%"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%1")(), "%1"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%{}")("a"), "%a"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("%b")(), "%b"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{}}")(), "{}"); + MPT_TEST_EXPECT_EQUAL(MPT_FORMAT_MESSAGE("{{{}}}")("a"), "{a}"); +} + +} // namespace message +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_MESSAGE_HPP Property changes on: src/mpt/format/tests/tests_format_message.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/format/tests/tests_format_simple.hpp =================================================================== --- src/mpt/format/tests/tests_format_simple.hpp (nonexistent) +++ src/mpt/format/tests/tests_format_simple.hpp (working copy) @@ -0,0 +1,161 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP +#define MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace format { +namespace simple { + +MPT_TEST_GROUP_INLINE("mpt/format/simple") +{ + MPT_TEST_EXPECT_EQUAL(mpt::format::val(1.5f), "1.5"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(true), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(false), "0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(0), "0"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-23), "-23"); + MPT_TEST_EXPECT_EQUAL(mpt::format::val(42), "42"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<3>((int32)-1), "-001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex((int32)-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(-0xabcde), "-abcde"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min()), "-80000000"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(std::numeric_limits::min() + 1), "-7fffffff"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), "123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), "00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), "123e"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(1), "1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(1), "01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(1), "001"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(11), "11"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(11), "011"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<0>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<1>(-1), "-1"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<2>(-1), "-01"); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec0<3>(-1), "-001"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(0xa2345678), MPT_USTRING("A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(0xa2345678), MPT_USTRING("0A2345678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(0xa2345678), MPT_USTRING("00A2345678")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(0x123e), L"123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<6>(0x123e), L"00123e"); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex0<2>(0x123e), L"123e"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + MPT_TEST_EXPECT_EQUAL(mpt::format::val(-87.0f), "-87"); + if (mpt::format::val(-0.5e-6) != "-5e-007" + && mpt::format::val(-0.5e-6) != "-5e-07" + && mpt::format::val(-0.5e-6) != "-5e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-7" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-07" + && mpt::format::val(-0.5e-6) != "-4.9999999999999998e-007") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-005" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-05" + && mpt::format::val(-1.0 / 65536.0) != "-1.52587890625e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.52587891e-5" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-005" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-05" + && mpt::format::val(-1.0f / 65536.0f) != "-1.5258789e-5") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + if (mpt::format::val(58.65403492763) != "58.654034927630001" + && mpt::format::val(58.65403492763) != "58.65403492763") + { + MPT_TEST_EXPECT_EQUAL(true, false); + } + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(58.65403492763, 6), "58.654"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(23.42, 1), "23.4"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(234.2, 1), "234.2"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(2342.0, 1), "2342.0"); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 2345678), std::string("2;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), std::string("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), std::string("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::dec(2, ';', 12345678), MPT_USTRING("12;34;56;78")); + MPT_TEST_EXPECT_EQUAL(mpt::format::hex(3, ':', 0xa2345678), MPT_USTRING("a2:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', 0xa2345678), MPT_USTRING("A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', 0xa2345678), MPT_USTRING("0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', 0xa2345678), MPT_USTRING("0:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', 0xa2345678), MPT_USTRING("00:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', 0xa2345678), MPT_USTRING("000:0A2:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<8>(3, ':', -0x12345678), MPT_USTRING("-12:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<9>(3, ':', -0x12345678), MPT_USTRING("-012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<10>(3, ':', -0x12345678), MPT_USTRING("-0:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<11>(3, ':', -0x12345678), MPT_USTRING("-00:012:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<12>(3, ':', -0x12345678), MPT_USTRING("-000:012:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', 0x345678), MPT_USTRING("345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', 0x345678), MPT_USTRING("0:345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<5>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<6>(3, ':', -0x345678), MPT_USTRING("-345:678")); + MPT_TEST_EXPECT_EQUAL(mpt::format::HEX0<7>(3, ':', -0x345678), MPT_USTRING("-0:345:678")); + + MPT_TEST_EXPECT_EQUAL(mpt::format::left(3, "a"), "a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::right(3, "a"), " a"); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(3, "a"), " a "); + MPT_TEST_EXPECT_EQUAL(mpt::format::center(4, "a"), " a "); + + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), "6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), "6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 4), "6.1235"); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 3), L"6.12"); + MPT_TEST_EXPECT_EQUAL(mpt::format::fix(6.12345, 3), L"6.123"); + MPT_TEST_EXPECT_EQUAL(mpt::format::flt(6.12345, 4), L"6.123"); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace simple +} // namespace format +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_FORMAT_TESTS_FORMAT_SIMPLE_HPP Property changes on: src/mpt/format/tests/tests_format_simple.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/json/json.hpp =================================================================== --- src/mpt/json/json.hpp (nonexistent) +++ src/mpt/json/json.hpp (working copy) @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_JSON_JSON_HPP +#define MPT_JSON_JSON_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/detect/nlohmann_json.hpp" + +#if MPT_DETECTED_NLOHMANN_JSON +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#include +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmismatched-tags" +#endif // MPT_COMPILER_CLANG +#include "nlohmann/json.hpp" +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG +#endif // MPT_DETECTED_NLOHMANN_JSON + + + +namespace nlohmann { +template <> +struct adl_serializer { + static void to_json(json & j, const mpt::ustring & val) { + j = mpt::convert(mpt::common_encoding::utf8, val); + } + static void from_json(const json & j, mpt::ustring & val) { + val = mpt::convert(mpt::common_encoding::utf8, j.get()); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::map & val) { + std::map utf8map; + for (const auto & value : val) + { + utf8map[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + j = std::move(utf8map); + } + static void from_json(const json & j, std::map & val) { + std::map utf8map = j.get>(); + std::map result; + for (const auto & value : utf8map) + { + result[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + val = std::move(result); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::optional & val) { + j = (val ? json{*val} : json{nullptr}); + } + static void from_json(const json & j, std::optional & val) { + if (!j.is_null()) + { + val = j.get(); + } else + { + val = std::nullopt; + } + } +}; +} // namespace nlohmann + + + +#endif // MPT_JSON_JSON_HPP Property changes on: src/mpt/json/json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/json/json.hpp =================================================================== --- src/mpt/json/json.hpp (nonexistent) +++ src/mpt/json/json.hpp (working copy) @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_JSON_JSON_HPP +#define MPT_JSON_JSON_HPP + +#include "mpt/base/detect.hpp" +#include "mpt/detect/nlohmann_json.hpp" + +#if MPT_DETECTED_NLOHMANN_JSON +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#include +#endif // MPT_DETECTED_NLOHMANN_JSON + +#if MPT_DETECTED_NLOHMANN_JSON +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmismatched-tags" +#endif // MPT_COMPILER_CLANG +#include "nlohmann/json.hpp" +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG +#endif // MPT_DETECTED_NLOHMANN_JSON + + + +namespace nlohmann { +template <> +struct adl_serializer { + static void to_json(json & j, const mpt::ustring & val) { + j = mpt::convert(mpt::common_encoding::utf8, val); + } + static void from_json(const json & j, mpt::ustring & val) { + val = mpt::convert(mpt::common_encoding::utf8, j.get()); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::map & val) { + std::map utf8map; + for (const auto & value : val) + { + utf8map[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + j = std::move(utf8map); + } + static void from_json(const json & j, std::map & val) { + std::map utf8map = j.get>(); + std::map result; + for (const auto & value : utf8map) + { + result[mpt::convert(mpt::common_encoding::utf8, value.first)] = value.second; + } + val = std::move(result); + } +}; +template +struct adl_serializer> { + static void to_json(json & j, const std::optional & val) { + j = (val ? json{*val} : json{nullptr}); + } + static void from_json(const json & j, std::optional & val) { + if (!j.is_null()) + { + val = j.get(); + } else + { + val = std::nullopt; + } + } +}; +} // namespace nlohmann + + + +#endif // MPT_JSON_JSON_HPP Property changes on: src/mpt/json/json.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/LICENSE.BSD-3-Clause.txt =================================================================== --- src/mpt/LICENSE.BSD-3-Clause.txt (nonexistent) +++ src/mpt/LICENSE.BSD-3-Clause.txt (working copy) @@ -0,0 +1,25 @@ +Copyright (c) 2004-2021, OpenMPT Project Developers and Contributors +Copyright (c) 1997-2003, Olivier Lapicque +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenMPT project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Property changes on: src/mpt/LICENSE.BSD-3-Clause.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: src/mpt/LICENSE.BSL-1.0.txt =================================================================== --- src/mpt/LICENSE.BSL-1.0.txt (nonexistent) +++ src/mpt/LICENSE.BSL-1.0.txt (working copy) @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. Property changes on: src/mpt/LICENSE.BSL-1.0.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: src/mpt/mutex/mutex.hpp =================================================================== --- src/mpt/mutex/mutex.hpp (nonexistent) +++ src/mpt/mutex/mutex.hpp (working copy) @@ -0,0 +1,178 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_MUTEX_MUTEX_HPP +#define MPT_MUTEX_MUTEX_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + +#if !MPT_PLATFORM_MULTITHREADED +#define MPT_MUTEX_NONE 1 +#elif MPT_COMPILER_GENERIC +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) +#define MPT_MUTEX_WIN32 1 +#else +#define MPT_MUTEX_STD 1 +#endif + +#ifndef MPT_MUTEX_STD +#define MPT_MUTEX_STD 0 +#endif +#ifndef MPT_MUTEX_WIN32 +#define MPT_MUTEX_WIN32 0 +#endif +#ifndef MPT_MUTEX_NONE +#define MPT_MUTEX_NONE 0 +#endif + +#if MPT_MUTEX_STD +#if !MPT_COMPILER_GENERIC && (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#include +#else +#include +#endif +#elif MPT_MUTEX_WIN32 +#include +#endif // MPT_MUTEX + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_MUTEX_STD + +using mutex = std::mutex; +using recursive_mutex = std::recursive_mutex; + +#elif MPT_MUTEX_WIN32 + +// compatible with c++11 std::mutex, can eventually be replaced without touching any usage site +class mutex { +private: + CRITICAL_SECTION impl; + +public: + mutex() { + InitializeCriticalSection(&impl); + } + ~mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +// compatible with c++11 std::recursive_mutex, can eventually be replaced without touching any usage site +class recursive_mutex { +private: + CRITICAL_SECTION impl; + +public: + recursive_mutex() { + InitializeCriticalSection(&impl); + } + ~recursive_mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +#else // MPT_MUTEX_NONE + +class mutex { +public: + mutex() { + return; + } + ~mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +class recursive_mutex { +public: + recursive_mutex() { + return; + } + ~recursive_mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +#endif // MPT_MUTEX + +#if MPT_MUTEX_STD + +template +using lock_guard = std::lock_guard; + +#else // !MPT_MUTEX_STD + +// compatible with c++11 std::lock_guard, can eventually be replaced without touching any usage site +template +class lock_guard { +private: + mutex_type & mutex; + +public: + lock_guard(mutex_type & m) + : mutex(m) { + mutex.lock(); + } + ~lock_guard() { + mutex.unlock(); + } +}; + +#endif // MPT_MUTEX_STD + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_MUTEX_MUTEX_HPP Property changes on: src/mpt/mutex/mutex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/mutex/mutex.hpp =================================================================== --- src/mpt/mutex/mutex.hpp (nonexistent) +++ src/mpt/mutex/mutex.hpp (working copy) @@ -0,0 +1,178 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_MUTEX_MUTEX_HPP +#define MPT_MUTEX_MUTEX_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" + + +#if !MPT_PLATFORM_MULTITHREADED +#define MPT_MUTEX_NONE 1 +#elif MPT_COMPILER_GENERIC +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#define MPT_MUTEX_STD 1 +#elif MPT_OS_WINDOWS && MPT_LIBCXX_GNU && !defined(_GLIBCXX_HAS_GTHREADS) +#define MPT_MUTEX_WIN32 1 +#else +#define MPT_MUTEX_STD 1 +#endif + +#ifndef MPT_MUTEX_STD +#define MPT_MUTEX_STD 0 +#endif +#ifndef MPT_MUTEX_WIN32 +#define MPT_MUTEX_WIN32 0 +#endif +#ifndef MPT_MUTEX_NONE +#define MPT_MUTEX_NONE 0 +#endif + +#if MPT_MUTEX_STD +#if !MPT_COMPILER_GENERIC && (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && defined(MPT_WITH_MINGWSTDTHREADS) +#include +#else +#include +#endif +#elif MPT_MUTEX_WIN32 +#include +#endif // MPT_MUTEX + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_MUTEX_STD + +using mutex = std::mutex; +using recursive_mutex = std::recursive_mutex; + +#elif MPT_MUTEX_WIN32 + +// compatible with c++11 std::mutex, can eventually be replaced without touching any usage site +class mutex { +private: + CRITICAL_SECTION impl; + +public: + mutex() { + InitializeCriticalSection(&impl); + } + ~mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +// compatible with c++11 std::recursive_mutex, can eventually be replaced without touching any usage site +class recursive_mutex { +private: + CRITICAL_SECTION impl; + +public: + recursive_mutex() { + InitializeCriticalSection(&impl); + } + ~recursive_mutex() { + DeleteCriticalSection(&impl); + } + void lock() { + EnterCriticalSection(&impl); + } + bool try_lock() { + return TryEnterCriticalSection(&impl) ? true : false; + } + void unlock() { + LeaveCriticalSection(&impl); + } +}; + +#else // MPT_MUTEX_NONE + +class mutex { +public: + mutex() { + return; + } + ~mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +class recursive_mutex { +public: + recursive_mutex() { + return; + } + ~recursive_mutex() { + return; + } + void lock() { + return; + } + bool try_lock() { + return true; + } + void unlock() { + return; + } +}; + +#endif // MPT_MUTEX + +#if MPT_MUTEX_STD + +template +using lock_guard = std::lock_guard; + +#else // !MPT_MUTEX_STD + +// compatible with c++11 std::lock_guard, can eventually be replaced without touching any usage site +template +class lock_guard { +private: + mutex_type & mutex; + +public: + lock_guard(mutex_type & m) + : mutex(m) { + mutex.lock(); + } + ~lock_guard() { + mutex.unlock(); + } +}; + +#endif // MPT_MUTEX_STD + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_MUTEX_MUTEX_HPP Property changes on: src/mpt/mutex/mutex.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/osinfo/windows_version.hpp =================================================================== --- src/mpt/osinfo/windows_version.hpp (nonexistent) +++ src/mpt/osinfo/windows_version.hpp (working copy) @@ -0,0 +1,347 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OSINFO_WINDOWS_VERSION_HPP +#define MPT_OSINFO_WINDOWS_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace osinfo { + +namespace windows { + + + +class Version { + +public: + enum Number : uint64 + { + WinNT4 = 0x0000000400000000ull, + Win2000 = 0x0000000500000000ull, + WinXP = 0x0000000500000001ull, + WinXP64 = 0x0000000500000002ull, + WinVista = 0x0000000600000000ull, + Win7 = 0x0000000600000001ull, + Win8 = 0x0000000600000002ull, + Win81 = 0x0000000600000003ull, + Win10 = 0x0000000a00000000ull, + WinNewer = Win10 + 1ull + }; + + struct System { + uint32 Major = 0; + uint32 Minor = 0; + System() = default; + constexpr System(Number number) noexcept + : Major(static_cast((static_cast(number) >> 32) & 0xffffffffu)) + , Minor(static_cast((static_cast(number) >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint64 number) noexcept + : Major(static_cast((number >> 32) & 0xffffffffu)) + , Minor(static_cast((number >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint32 major, uint32 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr operator uint64() const noexcept { + return (static_cast(Major) << 32) | (static_cast(Minor) << 0); + } + }; + + struct ServicePack { + uint16 Major = 0; + uint16 Minor = 0; + ServicePack() = default; + explicit constexpr ServicePack(uint16 major, uint16 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr bool HasServicePack() const noexcept { + return Major != 0 || Minor != 0; + } + constexpr operator uint32() const noexcept { + return (static_cast(Major) << 16) | (static_cast(Minor) << 0); + } + }; + + typedef uint32 Build; + + typedef uint32 TypeId; + +protected: + bool m_SystemIsWindows; + + System m_System; + ServicePack m_ServicePack; + Build m_Build; + TypeId m_Type; + +protected: + Version() noexcept + : m_SystemIsWindows(false) + , m_System() + , m_ServicePack() + , m_Build() + , m_Type() { + } + +public: + static Version NoWindows() noexcept { + return Version(); + } + + Version(mpt::osinfo::windows::Version::System system, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build, mpt::osinfo::windows::Version::TypeId type) noexcept + : m_SystemIsWindows(true) + , m_System(system) + , m_ServicePack(servicePack) + , m_Build(build) + , m_Type(type) { + } + +protected: +#if MPT_OS_WINDOWS + + static mpt::osinfo::windows::Version VersionFromNTDDI_VERSION() noexcept { + // Initialize to used SDK version + mpt::osinfo::windows::Version::System System = +#if NTDDI_VERSION >= 0x0A000000 // NTDDI_WIN10 + mpt::osinfo::windows::Version::Win10 +#elif NTDDI_VERSION >= 0x06030000 // NTDDI_WINBLUE + mpt::osinfo::windows::Version::Win81 +#elif NTDDI_VERSION >= 0x06020000 // NTDDI_WIN8 + mpt::osinfo::windows::Version::Win8 +#elif NTDDI_VERSION >= 0x06010000 // NTDDI_WIN7 + mpt::osinfo::windows::Version::Win7 +#elif NTDDI_VERSION >= 0x06000000 // NTDDI_VISTA + mpt::osinfo::windows::Version::WinVista +#elif NTDDI_VERSION >= 0x05020000 // NTDDI_WS03 + mpt::osinfo::windows::Version::WinXP64 +#elif NTDDI_VERSION >= NTDDI_WINXP + mpt::osinfo::windows::Version::WinXP +#elif NTDDI_VERSION >= NTDDI_WIN2K + mpt::osinfo::windows::Version::Win2000 +#else + mpt::osinfo::windows::Version::WinNT4 +#endif + ; + return mpt::osinfo::windows::Version(System, mpt::osinfo::windows::Version::ServicePack(((NTDDI_VERSION & 0xffffu) >> 8) & 0xffu, ((NTDDI_VERSION & 0xffffu) >> 0) & 0xffu), 0, 0); + } + + static mpt::osinfo::windows::Version::System SystemVersionFrom_WIN32_WINNT() noexcept { +#if defined(_WIN32_WINNT) + return mpt::osinfo::windows::Version::System((static_cast(_WIN32_WINNT) & 0xff00u) >> 8, (static_cast(_WIN32_WINNT) & 0x00ffu) >> 0); +#else + return mpt::osinfo::windows::Version::System(); +#endif + } + + static mpt::osinfo::windows::Version GatherWindowsVersion() noexcept { +#if MPT_OS_WINDOWS_WINRT + return VersionFromNTDDI_VERSION(); +#else // !MPT_OS_WINDOWS_WINRT + OSVERSIONINFOEXW versioninfoex{}; + versioninfoex.dwOSVersionInfoSize = sizeof(versioninfoex); +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4996) // 'GetVersionExW': was declared deprecated +#pragma warning(disable : 28159) // Consider using 'IsWindows*' instead of 'GetVersionExW'. Reason: Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers. +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif // MPT_COMPILER_CLANG + if (GetVersionExW((LPOSVERSIONINFOW)&versioninfoex) == FALSE) { + return VersionFromNTDDI_VERSION(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG + if (versioninfoex.dwPlatformId != VER_PLATFORM_WIN32_NT) { + return VersionFromNTDDI_VERSION(); + } + DWORD dwProductType = 0; +#if (_WIN32_WINNT >= 0x0600) // _WIN32_WINNT_VISTA + dwProductType = PRODUCT_UNDEFINED; + if (GetProductInfo(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion, versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor, &dwProductType) == FALSE) { + dwProductType = PRODUCT_UNDEFINED; + } +#endif + return mpt::osinfo::windows::Version( + mpt::osinfo::windows::Version::System(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion), + mpt::osinfo::windows::Version::ServicePack(versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor), + versioninfoex.dwBuildNumber, + dwProductType); +#endif // MPT_OS_WINDOWS_WINRT + } + +#endif // MPT_OS_WINDOWS + +public: + static mpt::osinfo::windows::Version Current() noexcept { +#if MPT_OS_WINDOWS + return GatherWindowsVersion(); +#else // !MPT_OS_WINDOWS + return mpt::osinfo::windows::Version::NoWindows(); +#endif // MPT_OS_WINDOWS + } + +public: + bool IsWindows() const noexcept { + return m_SystemIsWindows; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System < version; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_ServicePack < servicePack; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_Build < build; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + if (m_ServicePack > servicePack) { + return false; + } + if (m_ServicePack < servicePack) { + return true; + } + return m_Build < build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System >= version; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_ServicePack >= servicePack; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_Build >= build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + if (m_ServicePack < servicePack) { + return false; + } + if (m_ServicePack > servicePack) { + return true; + } + return m_Build >= build; + } + + mpt::osinfo::windows::Version::System GetSystem() const noexcept { + return m_System; + } + + mpt::osinfo::windows::Version::ServicePack GetServicePack() const noexcept { + return m_ServicePack; + } + + mpt::osinfo::windows::Version::Build GetBuild() const noexcept { + return m_Build; + } + + mpt::osinfo::windows::Version::TypeId GetTypeId() const noexcept { + return m_Type; + } + +}; // class Version + + + +} // namespace windows + +} // namespace osinfo + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OSINFO_WINDOWS_VERSION_HPP Property changes on: src/mpt/osinfo/windows_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/osinfo/windows_version.hpp =================================================================== --- src/mpt/osinfo/windows_version.hpp (nonexistent) +++ src/mpt/osinfo/windows_version.hpp (working copy) @@ -0,0 +1,347 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OSINFO_WINDOWS_VERSION_HPP +#define MPT_OSINFO_WINDOWS_VERSION_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace osinfo { + +namespace windows { + + + +class Version { + +public: + enum Number : uint64 + { + WinNT4 = 0x0000000400000000ull, + Win2000 = 0x0000000500000000ull, + WinXP = 0x0000000500000001ull, + WinXP64 = 0x0000000500000002ull, + WinVista = 0x0000000600000000ull, + Win7 = 0x0000000600000001ull, + Win8 = 0x0000000600000002ull, + Win81 = 0x0000000600000003ull, + Win10 = 0x0000000a00000000ull, + WinNewer = Win10 + 1ull + }; + + struct System { + uint32 Major = 0; + uint32 Minor = 0; + System() = default; + constexpr System(Number number) noexcept + : Major(static_cast((static_cast(number) >> 32) & 0xffffffffu)) + , Minor(static_cast((static_cast(number) >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint64 number) noexcept + : Major(static_cast((number >> 32) & 0xffffffffu)) + , Minor(static_cast((number >> 0) & 0xffffffffu)) { + } + explicit constexpr System(uint32 major, uint32 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr operator uint64() const noexcept { + return (static_cast(Major) << 32) | (static_cast(Minor) << 0); + } + }; + + struct ServicePack { + uint16 Major = 0; + uint16 Minor = 0; + ServicePack() = default; + explicit constexpr ServicePack(uint16 major, uint16 minor) noexcept + : Major(major) + , Minor(minor) { + } + constexpr bool HasServicePack() const noexcept { + return Major != 0 || Minor != 0; + } + constexpr operator uint32() const noexcept { + return (static_cast(Major) << 16) | (static_cast(Minor) << 0); + } + }; + + typedef uint32 Build; + + typedef uint32 TypeId; + +protected: + bool m_SystemIsWindows; + + System m_System; + ServicePack m_ServicePack; + Build m_Build; + TypeId m_Type; + +protected: + Version() noexcept + : m_SystemIsWindows(false) + , m_System() + , m_ServicePack() + , m_Build() + , m_Type() { + } + +public: + static Version NoWindows() noexcept { + return Version(); + } + + Version(mpt::osinfo::windows::Version::System system, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build, mpt::osinfo::windows::Version::TypeId type) noexcept + : m_SystemIsWindows(true) + , m_System(system) + , m_ServicePack(servicePack) + , m_Build(build) + , m_Type(type) { + } + +protected: +#if MPT_OS_WINDOWS + + static mpt::osinfo::windows::Version VersionFromNTDDI_VERSION() noexcept { + // Initialize to used SDK version + mpt::osinfo::windows::Version::System System = +#if NTDDI_VERSION >= 0x0A000000 // NTDDI_WIN10 + mpt::osinfo::windows::Version::Win10 +#elif NTDDI_VERSION >= 0x06030000 // NTDDI_WINBLUE + mpt::osinfo::windows::Version::Win81 +#elif NTDDI_VERSION >= 0x06020000 // NTDDI_WIN8 + mpt::osinfo::windows::Version::Win8 +#elif NTDDI_VERSION >= 0x06010000 // NTDDI_WIN7 + mpt::osinfo::windows::Version::Win7 +#elif NTDDI_VERSION >= 0x06000000 // NTDDI_VISTA + mpt::osinfo::windows::Version::WinVista +#elif NTDDI_VERSION >= 0x05020000 // NTDDI_WS03 + mpt::osinfo::windows::Version::WinXP64 +#elif NTDDI_VERSION >= NTDDI_WINXP + mpt::osinfo::windows::Version::WinXP +#elif NTDDI_VERSION >= NTDDI_WIN2K + mpt::osinfo::windows::Version::Win2000 +#else + mpt::osinfo::windows::Version::WinNT4 +#endif + ; + return mpt::osinfo::windows::Version(System, mpt::osinfo::windows::Version::ServicePack(((NTDDI_VERSION & 0xffffu) >> 8) & 0xffu, ((NTDDI_VERSION & 0xffffu) >> 0) & 0xffu), 0, 0); + } + + static mpt::osinfo::windows::Version::System SystemVersionFrom_WIN32_WINNT() noexcept { +#if defined(_WIN32_WINNT) + return mpt::osinfo::windows::Version::System((static_cast(_WIN32_WINNT) & 0xff00u) >> 8, (static_cast(_WIN32_WINNT) & 0x00ffu) >> 0); +#else + return mpt::osinfo::windows::Version::System(); +#endif + } + + static mpt::osinfo::windows::Version GatherWindowsVersion() noexcept { +#if MPT_OS_WINDOWS_WINRT + return VersionFromNTDDI_VERSION(); +#else // !MPT_OS_WINDOWS_WINRT + OSVERSIONINFOEXW versioninfoex{}; + versioninfoex.dwOSVersionInfoSize = sizeof(versioninfoex); +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4996) // 'GetVersionExW': was declared deprecated +#pragma warning(disable : 28159) // Consider using 'IsWindows*' instead of 'GetVersionExW'. Reason: Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers. +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif // MPT_COMPILER_CLANG + if (GetVersionExW((LPOSVERSIONINFOW)&versioninfoex) == FALSE) { + return VersionFromNTDDI_VERSION(); + } +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif // MPT_COMPILER_CLANG + if (versioninfoex.dwPlatformId != VER_PLATFORM_WIN32_NT) { + return VersionFromNTDDI_VERSION(); + } + DWORD dwProductType = 0; +#if (_WIN32_WINNT >= 0x0600) // _WIN32_WINNT_VISTA + dwProductType = PRODUCT_UNDEFINED; + if (GetProductInfo(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion, versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor, &dwProductType) == FALSE) { + dwProductType = PRODUCT_UNDEFINED; + } +#endif + return mpt::osinfo::windows::Version( + mpt::osinfo::windows::Version::System(versioninfoex.dwMajorVersion, versioninfoex.dwMinorVersion), + mpt::osinfo::windows::Version::ServicePack(versioninfoex.wServicePackMajor, versioninfoex.wServicePackMinor), + versioninfoex.dwBuildNumber, + dwProductType); +#endif // MPT_OS_WINDOWS_WINRT + } + +#endif // MPT_OS_WINDOWS + +public: + static mpt::osinfo::windows::Version Current() noexcept { +#if MPT_OS_WINDOWS + return GatherWindowsVersion(); +#else // !MPT_OS_WINDOWS + return mpt::osinfo::windows::Version::NoWindows(); +#endif // MPT_OS_WINDOWS + } + +public: + bool IsWindows() const noexcept { + return m_SystemIsWindows; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System < version; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_ServicePack < servicePack; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + return m_Build < build; + } + + bool IsBefore(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System > version) { + return false; + } + if (m_System < version) { + return true; + } + if (m_ServicePack > servicePack) { + return false; + } + if (m_ServicePack < servicePack) { + return true; + } + return m_Build < build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + return m_System >= version; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_ServicePack >= servicePack; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + return m_Build >= build; + } + + bool IsAtLeast(mpt::osinfo::windows::Version::System version, mpt::osinfo::windows::Version::ServicePack servicePack, mpt::osinfo::windows::Version::Build build) const noexcept { + if (!m_SystemIsWindows) { + return false; + } + if (m_System < version) { + return false; + } + if (m_System > version) { + return true; + } + if (m_ServicePack < servicePack) { + return false; + } + if (m_ServicePack > servicePack) { + return true; + } + return m_Build >= build; + } + + mpt::osinfo::windows::Version::System GetSystem() const noexcept { + return m_System; + } + + mpt::osinfo::windows::Version::ServicePack GetServicePack() const noexcept { + return m_ServicePack; + } + + mpt::osinfo::windows::Version::Build GetBuild() const noexcept { + return m_Build; + } + + mpt::osinfo::windows::Version::TypeId GetTypeId() const noexcept { + return m_Type; + } + +}; // class Version + + + +} // namespace windows + +} // namespace osinfo + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OSINFO_WINDOWS_VERSION_HPP Property changes on: src/mpt/osinfo/windows_version.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/out_of_memory/out_of_memory.hpp =================================================================== --- src/mpt/out_of_memory/out_of_memory.hpp (nonexistent) +++ src/mpt/out_of_memory/out_of_memory.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP +#define MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#if !MPT_DETECTED_MFC +#include +#endif // !MPT_DETECTED_MFC + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Exception handling helpers, because MFC requires explicit deletion of the exception object, +// Thus, always call exactly one of mpt::rethrow_out_of_memory(e) or mpt::delete_out_of_memory(e). + +#if MPT_DETECTED_MFC + +using out_of_memory = CMemoryException *; + +[[noreturn]] inline void throw_out_of_memory() { + AfxThrowMemoryException(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory & e) { + if (e) { + e->Delete(); + e = nullptr; + } +} + +#else // !MPT_DETECTED_MFC + +using out_of_memory = const std::bad_alloc &; + +[[noreturn]] inline void throw_out_of_memory() { + throw std::bad_alloc(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); +} + +#endif // MPT_DETECTED_MFC + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP Property changes on: src/mpt/out_of_memory/out_of_memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/out_of_memory/out_of_memory.hpp =================================================================== --- src/mpt/out_of_memory/out_of_memory.hpp (nonexistent) +++ src/mpt/out_of_memory/out_of_memory.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP +#define MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#if !MPT_DETECTED_MFC +#include +#endif // !MPT_DETECTED_MFC + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Exception handling helpers, because MFC requires explicit deletion of the exception object, +// Thus, always call exactly one of mpt::rethrow_out_of_memory(e) or mpt::delete_out_of_memory(e). + +#if MPT_DETECTED_MFC + +using out_of_memory = CMemoryException *; + +[[noreturn]] inline void throw_out_of_memory() { + AfxThrowMemoryException(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory & e) { + if (e) { + e->Delete(); + e = nullptr; + } +} + +#else // !MPT_DETECTED_MFC + +using out_of_memory = const std::bad_alloc &; + +[[noreturn]] inline void throw_out_of_memory() { + throw std::bad_alloc(); +} + +[[noreturn]] inline void rethrow_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); + throw; +} + +inline void delete_out_of_memory(out_of_memory e) { + MPT_UNUSED(e); +} + +#endif // MPT_DETECTED_MFC + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_OUT_OF_MEMORY_OUT_OF_MEMORY_HPP Property changes on: src/mpt/out_of_memory/out_of_memory.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/parse.hpp =================================================================== --- src/mpt/parse/parse.hpp (nonexistent) +++ src/mpt/parse/parse.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_PARSE_HPP +#define MPT_PARSE_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::string parse_as_internal_string_type(const std::string & s) { + return s; +} + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +inline std::wstring parse_as_internal_string_type(const std::wstring & s) { + return s; +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_USTRING_MODE_WIDE +template +inline std::wstring parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(s); +} +#else // !MPT_USTRING_MODE_WIDE +template +inline std::string parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(mpt::common_encoding::utf8, s); +} +#endif // MPT_USTRING_MODE_WIDE + + +template +inline T ConvertStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> value)) { + return T{}; + } + } + return value; +} + + +template +inline T ConvertHexStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> std::hex >> value)) { + return T{}; + } + } + return value; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_PARSE_HPP Property changes on: src/mpt/parse/parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/tests/tests_parse.hpp =================================================================== --- src/mpt/parse/tests/tests_parse.hpp (nonexistent) +++ src/mpt/parse/tests/tests_parse.hpp (working copy) @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_TESTS_PARSE_HPP +#define MPT_PARSE_TESTS_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace parse { + +MPT_TEST_GROUP_INLINE("mpt/parse") +{ + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("586"), 586u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("2147483647"), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("4294967295"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-9223372036854775808"), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-159"), -159); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("85059"), 85059u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), (uint64)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("18446744073709551615"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-87.0"), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-0.5e-6"), -0.5e-6); +#endif +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("58.65403492763"), 58.65403492763); +#else + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStrTo("58.65403492763"), 58.65403492763, 0.0001); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-87.0)), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-0.5e-6)), -0.5e-6); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo("fe"), 254); +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(L"fe"), 254); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(MPT_USTRING("ffff")), 65535u); +} + +} // namespace parse +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_TESTS_PARSE_HPP Property changes on: src/mpt/parse/tests/tests_parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/parse.hpp =================================================================== --- src/mpt/parse/parse.hpp (nonexistent) +++ src/mpt/parse/parse.hpp (working copy) @@ -0,0 +1,107 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_PARSE_HPP +#define MPT_PARSE_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +inline std::string parse_as_internal_string_type(const std::string & s) { + return s; +} + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +inline std::wstring parse_as_internal_string_type(const std::wstring & s) { + return s; +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_USTRING_MODE_WIDE +template +inline std::wstring parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(s); +} +#else // !MPT_USTRING_MODE_WIDE +template +inline std::string parse_as_internal_string_type(const Tstring & s) { + return mpt::convert(mpt::common_encoding::utf8, s); +} +#endif // MPT_USTRING_MODE_WIDE + + +template +inline T ConvertStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> value)) { + return T{}; + } + } + return value; +} + + +template +inline T ConvertHexStringTo(const Tstring & str) { + std::basic_istringstream stream(mpt::parse_as_internal_string_type(mpt::as_string(str))); + stream.imbue(std::locale::classic()); + T value; + if constexpr (std::is_same::value) { + signed int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else if constexpr (std::is_same::value) { + unsigned int tmp; + if (!(stream >> std::hex >> tmp)) { + return T{}; + } + value = static_cast(tmp); + } else { + if (!(stream >> std::hex >> value)) { + return T{}; + } + } + return value; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_PARSE_HPP Property changes on: src/mpt/parse/parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/tests/tests_parse.hpp =================================================================== --- src/mpt/parse/tests/tests_parse.hpp (nonexistent) +++ src/mpt/parse/tests/tests_parse.hpp (working copy) @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_TESTS_PARSE_HPP +#define MPT_PARSE_TESTS_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace parse { + +MPT_TEST_GROUP_INLINE("mpt/parse") +{ + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("586"), 586u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("2147483647"), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("4294967295"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-9223372036854775808"), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-159"), -159); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("85059"), 85059u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), (uint64)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("18446744073709551615"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-87.0"), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-0.5e-6"), -0.5e-6); +#endif +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("58.65403492763"), 58.65403492763); +#else + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStrTo("58.65403492763"), 58.65403492763, 0.0001); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-87.0)), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-0.5e-6)), -0.5e-6); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo("fe"), 254); +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(L"fe"), 254); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(MPT_USTRING("ffff")), 65535u); +} + +} // namespace parse +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_TESTS_PARSE_HPP Property changes on: src/mpt/parse/tests/tests_parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/parse/tests/tests_parse.hpp =================================================================== --- src/mpt/parse/tests/tests_parse.hpp (nonexistent) +++ src/mpt/parse/tests/tests_parse.hpp (working copy) @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_PARSE_TESTS_PARSE_HPP +#define MPT_PARSE_TESTS_PARSE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace parse { + +MPT_TEST_GROUP_INLINE("mpt/parse") +{ + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("586"), 586u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("2147483647"), (uint32)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("4294967295"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-9223372036854775808"), std::numeric_limits::min()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-159"), -159); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("85059"), 85059u); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("9223372036854775807"), (uint64)std::numeric_limits::max()); + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("18446744073709551615"), std::numeric_limits::max()); + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-87.0"), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("-0.5e-6"), -0.5e-6); +#endif +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo("58.65403492763"), 58.65403492763); +#else + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStrTo("58.65403492763"), 58.65403492763, 0.0001); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-87.0)), -87.0f); +#if !MPT_OS_DJGPP + MPT_TEST_EXPECT_EQUAL(mpt::ConvertStringTo(mpt::format::val(-0.5e-6)), -0.5e-6); +#endif + + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo("fe"), 254); +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(L"fe"), 254); +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + MPT_TEST_EXPECT_EQUAL(mpt::ConvertHexStringTo(MPT_USTRING("ffff")), 65535u); +} + +} // namespace parse +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_PARSE_TESTS_PARSE_HPP Property changes on: src/mpt/parse/tests/tests_parse.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/crand.hpp =================================================================== --- src/mpt/random/crand.hpp (nonexistent) +++ src/mpt/random/crand.hpp (working copy) @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_CRAND_HPP +#define MPT_RANDOM_CRAND_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/numeric.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class crand { +public: + using state_type = void; + using result_type = int; + +private: + static void reseed(uint32 seed) { + std::srand(seed); + } + +public: + template + static void reseed(Trd & rd) { + reseed(mpt::random(rd)); + } + +public: + crand() = default; + explicit crand(const std::string &) { + return; + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return 0; + } + static MPT_CONSTEXPRINLINE result_type max() { + return RAND_MAX; + } + static MPT_CONSTEXPRINLINE int result_bits() { + return mpt::lower_bound_entropy_bits(RAND_MAX); + } + result_type operator()() { + return std::rand(); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_CRAND_HPP Property changes on: src/mpt/random/crand.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/default_engines.hpp =================================================================== --- src/mpt/random/default_engines.hpp (nonexistent) +++ src/mpt/random/default_engines.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEFAULT_ENGINES_HPP +#define MPT_RANDOM_DEFAULT_ENGINES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using deterministic_fast_engine = mpt::lcg_msvc; +using deterministic_good_engine = mpt::lcg_musl; + +// We cannot use std::minstd_rand here because it has not a power-of-2 sized +// output domain which we rely upon. +using fast_engine = mpt::lcg_msvc; // about 3 ALU operations, ~32bit of state, suited for inner loops +using good_engine = std::ranlux48; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEFAULT_ENGINES_HPP Property changes on: src/mpt/random/default_engines.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/device.hpp =================================================================== --- src/mpt/random/device.hpp (nonexistent) +++ src/mpt/random/device.hpp (working copy) @@ -0,0 +1,303 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEVICE_HPP +#define MPT_RANDOM_DEVICE_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/mutex/mutex.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" +#include "mpt/random/random.hpp" + +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr uint32 DETERMINISTIC_RNG_SEED = 3141592653u; // pi + + + +template +struct default_radom_seed_hash { +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc32c; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc64_jones; +}; + + +class prng_random_device_time_seeder { + +public: + template + inline T generate_seed() { + // Note: CRC is actually not that good a choice here, but it is simple and we + // already have an implementaion available. Better choices for mixing entropy + // would be a hash function with proper avalanche characteristics or a block + // or stream cipher with any pre-choosen random key and IV. The only aspect we + // really need here is whitening of the bits. + typename mpt::default_radom_seed_hash::type hash; + + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#if !defined(MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK) + // Avoid std::chrono::high_resolution_clock on Emscripten because availability is problematic in AudioWorklet context. + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::high_resolution_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#endif // !MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK + + return static_cast(hash.result()); + } + +public: + prng_random_device_time_seeder() = default; +}; + + +// C++11 std::random_device may be implemented as a deterministic PRNG. +// There is no way to seed this PRNG and it is allowed to be seeded with the +// same value on each program invocation. This makes std::random_device +// completely useless even as a non-cryptographic entropy pool. +// We fallback to time-seeded std::mt19937 if std::random_device::entropy() is +// 0 or less. +class sane_random_device { +private: + mpt::mutex m; + std::string token; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + std::unique_ptr prd; + bool rd_reliable{false}; +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + std::unique_ptr rd_fallback; + +public: + using result_type = unsigned int; + +private: + void init_fallback() { + if (!rd_fallback) { + if (token.length() > 0) { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + std::vector seeds; + seeds.push_back(static_cast(seed_val >> 32)); + seeds.push_back(static_cast(seed_val >> 0)); + for (std::size_t i = 0; i < token.length(); ++i) { + seeds.push_back(static_cast(static_cast(token[i]))); + } + std::seed_seq seed(seeds.begin(), seeds.end()); + rd_fallback = std::make_unique(seed); + } else { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + unsigned int seeds[2]; + seeds[0] = static_cast(seed_val >> 32); + seeds[1] = static_cast(seed_val >> 0); + std::seed_seq seed(seeds + 0, seeds + 2); + rd_fallback = std::make_unique(seed); + } + } + } + +public: + sane_random_device() { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + sane_random_device(const std::string & token_) + : token(token_) { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(token); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(result_type) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + result_type result = 0; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + if (prd) { + try { + if constexpr (std::random_device::min() != 0 || !mpt::is_mask(std::random_device::max())) { + // insane std::random_device + // This implementation is not exactly uniformly distributed but good enough + // for OpenMPT. + constexpr double rd_min = static_cast(std::random_device::min()); + constexpr double rd_max = static_cast(std::random_device::max()); + constexpr double rd_range = rd_max - rd_min; + constexpr double rd_size = rd_range + 1.0; + const double rd_entropy = std::log2(rd_size); + const int iterations = static_cast(std::ceil(result_bits() / rd_entropy)); + double tmp = 0.0; + for (int i = 0; i < iterations; ++i) { + tmp = (tmp * rd_size) + (static_cast((*prd)()) - rd_min); + } + double result_01 = std::floor(tmp / std::pow(rd_size, iterations)); + result = static_cast(std::floor(result_01 * (static_cast(max() - min()) + 1.0))) + min(); + } else { + // sane std::random_device + result = 0; + std::size_t rd_bits = mpt::lower_bound_entropy_bits(std::random_device::max()); + for (std::size_t entropy = 0; entropy < (sizeof(result_type) * 8); entropy += rd_bits) { + if (rd_bits < (sizeof(result_type) * 8)) { + result = (result << rd_bits) | static_cast((*prd)()); + } else { + result = result | static_cast((*prd)()); + } + } + } + } catch (const std::exception &) { + rd_reliable = false; + init_fallback(); + } + } else { + rd_reliable = false; + } + if (!rd_reliable) { + // std::random_device is unreliable + // XOR the generated random number with more entropy from the time-seeded + // PRNG. + // Note: This is safe even if the std::random_device itself is implemented + // as a std::mt19937 PRNG because we are very likely using a different + // seed. + result ^= mpt::random(*rd_fallback); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + result ^= mpt::random(*rd_fallback); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + return result; + } +}; + + +class prng_random_device_deterministic_seeder { +protected: + template + constexpr T generate_seed() noexcept { + return static_cast(mpt::DETERMINISTIC_RNG_SEED); + } + +protected: + prng_random_device_deterministic_seeder() = default; +}; + +template +class prng_random_device + : private seeder { +public: + using result_type = unsigned int; + +private: + mpt::mutex m; + Trng rng; + +public: + prng_random_device() + : rng(seeder::template generate_seed()) { + return; + } + prng_random_device(const std::string &) + : rng(seeder::template generate_seed()) { + return; + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(unsigned int) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + return mpt::random(rng); + } +}; + + +using deterministc_random_device = mpt::prng_random_device; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEVICE_HPP Property changes on: src/mpt/random/device.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine.hpp =================================================================== --- src/mpt/random/engine.hpp (nonexistent) +++ src/mpt/random/engine.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_HPP +#define MPT_RANDOM_ENGINE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/seed.hpp" + +#include +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct engine_traits { + typedef typename Trng::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return Trng::result_bits(); + } + template + static inline Trng make(Trd & rd) { + return Trng(rd); + } +}; + +// C++11 random does not provide any sane way to determine the amount of entropy +// required to seed a particular engine. VERY STUPID. +// List the ones we are likely to use. + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937::result_type) * 8 * std::mt19937::state_size + }; + typedef std::mt19937 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937_64::result_type) * 8 * std::mt19937_64::state_size + }; + typedef std::mt19937_64 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux24_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux48_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + + + +template +inline Trng make_prng(Trd & rd) { + return mpt::engine_traits::make(rd); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_HPP Property changes on: src/mpt/random/engine.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine_lcg.hpp =================================================================== --- src/mpt/random/engine_lcg.hpp (nonexistent) +++ src/mpt/random/engine_lcg.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_LCG_HPP +#define MPT_RANDOM_ENGINE_LCG_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4724) // potential mod by 0 +#endif // MPT_COMPILER_MSVC + +template +class lcg_engine { +public: + typedef Tstate state_type; + typedef Tvalue result_type; + +private: + state_type state; + +public: + template + explicit inline lcg_engine(Trng & rd) + : state(mpt::random(rd)) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + explicit inline lcg_engine(state_type seed) + : state(seed) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return static_cast(0); + } + static MPT_CONSTEXPRINLINE result_type max() { + static_assert(((result_mask >> result_shift) << result_shift) == result_mask); + return static_cast(result_mask >> result_shift); + } + static MPT_CONSTEXPRINLINE int result_bits() { + static_assert(((static_cast(1) << result_bits_) - 1) == (result_mask >> result_shift)); + return result_bits_; + } + inline result_type operator()() { + // we return results from the current state and update state after returning. results in better pipelining. + state_type s = state; + result_type result = static_cast((s & result_mask) >> result_shift); + s = mpt::modulo_if_not_zero((a * s) + c); + state = s; + return result; + } +}; + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + +typedef lcg_engine lcg_msvc; +typedef lcg_engine lcg_c99; +typedef lcg_engine lcg_musl; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_LCG_HPP Property changes on: src/mpt/random/engine_lcg.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/random.hpp =================================================================== --- src/mpt/random/random.hpp (nonexistent) +++ src/mpt/random/random.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_RANDOM_HPP +#define MPT_RANDOM_RANDOM_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < (sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + return static_cast(result); +} + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if constexpr (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +inline T random(Trng & rng, std::size_t required_entropy_bits) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +struct uniform_real_distribution { +private: + T a; + T b; + +public: + inline uniform_real_distribution(T a_, T b_) + : a(a_) + , b(b_) { + return; + } + template + inline T operator()(Trng & rng) const { + const int mantissa_bits = std::numeric_limits::digits; + return ((b - a) * static_cast(mpt::random(rng)) / static_cast((static_cast(1u) << mantissa_bits))) + a; + } +}; + + +template +inline T random(Trng & rng, T min, T max) { + static_assert(!std::numeric_limits::is_integer); + typedef mpt::uniform_real_distribution dis_type; + dis_type dis(min, max); + return static_cast(dis(rng)); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_RANDOM_HPP Property changes on: src/mpt/random/random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/seed.hpp =================================================================== --- src/mpt/random/seed.hpp (nonexistent) +++ src/mpt/random/seed.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_SEED_HPP +#define MPT_RANDOM_SEED_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class seed_seq_values { +private: + std::array seeds; + +public: + template + explicit seed_seq_values(Trd & rd) { + for (std::size_t i = 0; i < N; ++i) { + seeds[i] = rd(); + } + } + const unsigned int * begin() const { + return seeds.data(); + } + const unsigned int * end() const { + return seeds.data() + N; + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_SEED_HPP Property changes on: src/mpt/random/seed.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/tests/tests_random.hpp =================================================================== --- src/mpt/random/tests/tests_random.hpp (nonexistent) +++ src/mpt/random/tests/tests_random.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_RANDOM_HPP +#define MPT_BASE_TESTS_RANDOM_HPP + + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/random/random.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace random { + +MPT_TEST_GROUP_INLINE("mpt/random") +{ + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + + bool failed = false; + + for (std::size_t i = 0; i < 10000; ++i) { + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 1u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0u, 1u); + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 1); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0, 1); + + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0f, 1.0f), 0.0f, 1.0f); + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0, 1.0), 0.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 1.0), -1.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 0.0), -1.0, 0.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 2.0), 1.0, 2.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 3.0), 1.0, 3.0); + } + + MPT_TEST_EXPECT_EXPR(!failed); +} + +} // namespace random +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_RANDOM_HPP Property changes on: src/mpt/random/tests/tests_random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/crand.hpp =================================================================== --- src/mpt/random/crand.hpp (nonexistent) +++ src/mpt/random/crand.hpp (working copy) @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_CRAND_HPP +#define MPT_RANDOM_CRAND_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/numeric.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +class crand { +public: + using state_type = void; + using result_type = int; + +private: + static void reseed(uint32 seed) { + std::srand(seed); + } + +public: + template + static void reseed(Trd & rd) { + reseed(mpt::random(rd)); + } + +public: + crand() = default; + explicit crand(const std::string &) { + return; + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return 0; + } + static MPT_CONSTEXPRINLINE result_type max() { + return RAND_MAX; + } + static MPT_CONSTEXPRINLINE int result_bits() { + return mpt::lower_bound_entropy_bits(RAND_MAX); + } + result_type operator()() { + return std::rand(); + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_CRAND_HPP Property changes on: src/mpt/random/crand.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/default_engines.hpp =================================================================== --- src/mpt/random/default_engines.hpp (nonexistent) +++ src/mpt/random/default_engines.hpp (working copy) @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEFAULT_ENGINES_HPP +#define MPT_RANDOM_DEFAULT_ENGINES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +using deterministic_fast_engine = mpt::lcg_msvc; +using deterministic_good_engine = mpt::lcg_musl; + +// We cannot use std::minstd_rand here because it has not a power-of-2 sized +// output domain which we rely upon. +using fast_engine = mpt::lcg_msvc; // about 3 ALU operations, ~32bit of state, suited for inner loops +using good_engine = std::ranlux48; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEFAULT_ENGINES_HPP Property changes on: src/mpt/random/default_engines.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/device.hpp =================================================================== --- src/mpt/random/device.hpp (nonexistent) +++ src/mpt/random/device.hpp (working copy) @@ -0,0 +1,303 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_DEVICE_HPP +#define MPT_RANDOM_DEVICE_HPP + + + +#include "mpt/base/bit.hpp" +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/mutex/mutex.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/random/engine.hpp" +#include "mpt/random/engine_lcg.hpp" +#include "mpt/random/random.hpp" + +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +inline constexpr uint32 DETERMINISTIC_RNG_SEED = 3141592653u; // pi + + + +template +struct default_radom_seed_hash { +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc16; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc32c; +}; + +template <> +struct default_radom_seed_hash { + using type = mpt::crc64_jones; +}; + + +class prng_random_device_time_seeder { + +public: + template + inline T generate_seed() { + // Note: CRC is actually not that good a choice here, but it is simple and we + // already have an implementaion available. Better choices for mixing entropy + // would be a hash function with proper avalanche characteristics or a block + // or stream cipher with any pre-choosen random key and IV. The only aspect we + // really need here is whitening of the bits. + typename mpt::default_radom_seed_hash::type hash; + + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#if !defined(MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK) + // Avoid std::chrono::high_resolution_clock on Emscripten because availability is problematic in AudioWorklet context. + { + uint64be time; + time = std::chrono::duration_cast(std::chrono::high_resolution_clock().now().time_since_epoch()).count(); + std::byte bytes[sizeof(time)]; + std::memcpy(bytes, &time, sizeof(time)); + hash(std::begin(bytes), std::end(bytes)); + } +#endif // !MPT_COMPILER_QUIRK_CHRONO_NO_HIGH_RESOLUTION_CLOCK + + return static_cast(hash.result()); + } + +public: + prng_random_device_time_seeder() = default; +}; + + +// C++11 std::random_device may be implemented as a deterministic PRNG. +// There is no way to seed this PRNG and it is allowed to be seeded with the +// same value on each program invocation. This makes std::random_device +// completely useless even as a non-cryptographic entropy pool. +// We fallback to time-seeded std::mt19937 if std::random_device::entropy() is +// 0 or less. +class sane_random_device { +private: + mpt::mutex m; + std::string token; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + std::unique_ptr prd; + bool rd_reliable{false}; +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + std::unique_ptr rd_fallback; + +public: + using result_type = unsigned int; + +private: + void init_fallback() { + if (!rd_fallback) { + if (token.length() > 0) { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + std::vector seeds; + seeds.push_back(static_cast(seed_val >> 32)); + seeds.push_back(static_cast(seed_val >> 0)); + for (std::size_t i = 0; i < token.length(); ++i) { + seeds.push_back(static_cast(static_cast(token[i]))); + } + std::seed_seq seed(seeds.begin(), seeds.end()); + rd_fallback = std::make_unique(seed); + } else { + uint64 seed_val = mpt::prng_random_device_time_seeder().generate_seed(); + unsigned int seeds[2]; + seeds[0] = static_cast(seed_val >> 32); + seeds[1] = static_cast(seed_val >> 0); + std::seed_seq seed(seeds + 0, seeds + 2); + rd_fallback = std::make_unique(seed); + } + } + } + +public: + sane_random_device() { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + sane_random_device(const std::string & token_) + : token(token_) { +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + try { + prd = std::make_unique(token); + rd_reliable = ((*prd).entropy() > 0.0); + } catch (mpt::out_of_memory e) { + mpt::rethrow_out_of_memory(e); + } catch (const std::exception &) { + rd_reliable = false; + } + if (!rd_reliable) { + init_fallback(); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + init_fallback(); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(result_type) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + result_type result = 0; +#if !defined(MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE) + if (prd) { + try { + if constexpr (std::random_device::min() != 0 || !mpt::is_mask(std::random_device::max())) { + // insane std::random_device + // This implementation is not exactly uniformly distributed but good enough + // for OpenMPT. + constexpr double rd_min = static_cast(std::random_device::min()); + constexpr double rd_max = static_cast(std::random_device::max()); + constexpr double rd_range = rd_max - rd_min; + constexpr double rd_size = rd_range + 1.0; + const double rd_entropy = std::log2(rd_size); + const int iterations = static_cast(std::ceil(result_bits() / rd_entropy)); + double tmp = 0.0; + for (int i = 0; i < iterations; ++i) { + tmp = (tmp * rd_size) + (static_cast((*prd)()) - rd_min); + } + double result_01 = std::floor(tmp / std::pow(rd_size, iterations)); + result = static_cast(std::floor(result_01 * (static_cast(max() - min()) + 1.0))) + min(); + } else { + // sane std::random_device + result = 0; + std::size_t rd_bits = mpt::lower_bound_entropy_bits(std::random_device::max()); + for (std::size_t entropy = 0; entropy < (sizeof(result_type) * 8); entropy += rd_bits) { + if (rd_bits < (sizeof(result_type) * 8)) { + result = (result << rd_bits) | static_cast((*prd)()); + } else { + result = result | static_cast((*prd)()); + } + } + } + } catch (const std::exception &) { + rd_reliable = false; + init_fallback(); + } + } else { + rd_reliable = false; + } + if (!rd_reliable) { + // std::random_device is unreliable + // XOR the generated random number with more entropy from the time-seeded + // PRNG. + // Note: This is safe even if the std::random_device itself is implemented + // as a std::mt19937 PRNG because we are very likely using a different + // seed. + result ^= mpt::random(*rd_fallback); + } +#else // MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + result ^= mpt::random(*rd_fallback); +#endif // !MPT_COMPILER_QUIRK_RANDOM_NO_RANDOM_DEVICE + return result; + } +}; + + +class prng_random_device_deterministic_seeder { +protected: + template + constexpr T generate_seed() noexcept { + return static_cast(mpt::DETERMINISTIC_RNG_SEED); + } + +protected: + prng_random_device_deterministic_seeder() = default; +}; + +template +class prng_random_device + : private seeder { +public: + using result_type = unsigned int; + +private: + mpt::mutex m; + Trng rng; + +public: + prng_random_device() + : rng(seeder::template generate_seed()) { + return; + } + prng_random_device(const std::string &) + : rng(seeder::template generate_seed()) { + return; + } + static MPT_CONSTEXPRINLINE result_type min() { + return std::numeric_limits::min(); + } + static MPT_CONSTEXPRINLINE result_type max() { + return std::numeric_limits::max(); + } + static MPT_CONSTEXPRINLINE int result_bits() { + return sizeof(unsigned int) * 8; + } + result_type operator()() { + mpt::lock_guard l(m); + return mpt::random(rng); + } +}; + + +using deterministc_random_device = mpt::prng_random_device; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_DEVICE_HPP Property changes on: src/mpt/random/device.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine.hpp =================================================================== --- src/mpt/random/engine.hpp (nonexistent) +++ src/mpt/random/engine.hpp (working copy) @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_HPP +#define MPT_RANDOM_ENGINE_HPP + + + +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/seed.hpp" + +#include +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +template +struct engine_traits { + typedef typename Trng::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return Trng::result_bits(); + } + template + static inline Trng make(Trd & rd) { + return Trng(rd); + } +}; + +// C++11 random does not provide any sane way to determine the amount of entropy +// required to seed a particular engine. VERY STUPID. +// List the ones we are likely to use. + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937::result_type) * 8 * std::mt19937::state_size + }; + typedef std::mt19937 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = sizeof(std::mt19937_64::result_type) * 8 * std::mt19937_64::state_size + }; + typedef std::mt19937_64 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + std::unique_ptr> values = std::make_unique>(rd); + std::seed_seq seed(values->begin(), values->end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48_base rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return rng_type::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux24_base::word_size + }; + typedef std::ranlux24 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux24_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + +template <> +struct engine_traits { + enum : std::size_t + { + seed_bits = std::ranlux48_base::word_size + }; + typedef std::ranlux48 rng_type; + typedef rng_type::result_type result_type; + static MPT_CONSTEXPRINLINE int result_bits() { + return std::ranlux48_base::word_size; + } + template + static inline rng_type make(Trd & rd) { + mpt::seed_seq_values values(rd); + std::seed_seq seed(values.begin(), values.end()); + return rng_type(seed); + } +}; + + + +template +inline Trng make_prng(Trd & rd) { + return mpt::engine_traits::make(rd); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_HPP Property changes on: src/mpt/random/engine.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/engine_lcg.hpp =================================================================== --- src/mpt/random/engine_lcg.hpp (nonexistent) +++ src/mpt/random/engine_lcg.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_ENGINE_LCG_HPP +#define MPT_RANDOM_ENGINE_LCG_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/random.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4724) // potential mod by 0 +#endif // MPT_COMPILER_MSVC + +template +class lcg_engine { +public: + typedef Tstate state_type; + typedef Tvalue result_type; + +private: + state_type state; + +public: + template + explicit inline lcg_engine(Trng & rd) + : state(mpt::random(rd)) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + explicit inline lcg_engine(state_type seed) + : state(seed) { + operator()(); // we return results from the current state and update state after returning. results in better pipelining. + } + +public: + static MPT_CONSTEXPRINLINE result_type min() { + return static_cast(0); + } + static MPT_CONSTEXPRINLINE result_type max() { + static_assert(((result_mask >> result_shift) << result_shift) == result_mask); + return static_cast(result_mask >> result_shift); + } + static MPT_CONSTEXPRINLINE int result_bits() { + static_assert(((static_cast(1) << result_bits_) - 1) == (result_mask >> result_shift)); + return result_bits_; + } + inline result_type operator()() { + // we return results from the current state and update state after returning. results in better pipelining. + state_type s = state; + result_type result = static_cast((s & result_mask) >> result_shift); + s = mpt::modulo_if_not_zero((a * s) + c); + state = s; + return result; + } +}; + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif // MPT_COMPILER_MSVC + +typedef lcg_engine lcg_msvc; +typedef lcg_engine lcg_c99; +typedef lcg_engine lcg_musl; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_ENGINE_LCG_HPP Property changes on: src/mpt/random/engine_lcg.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/random.hpp =================================================================== --- src/mpt/random/random.hpp (nonexistent) +++ src/mpt/random/random.hpp (working copy) @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_RANDOM_HPP +#define MPT_RANDOM_RANDOM_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/random/engine.hpp" + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < (sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + return static_cast(result); +} + +template +inline T random(Trng & rng) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if constexpr (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +inline T random(Trng & rng, std::size_t required_entropy_bits) { + static_assert(std::numeric_limits::is_integer); + typedef typename std::make_unsigned::type unsigned_T; + const unsigned int rng_bits = mpt::engine_traits::result_bits(); + unsigned_T result = 0; + for (std::size_t entropy = 0; entropy < std::min(required_entropy_bits, sizeof(T) * 8); entropy += rng_bits) { + if constexpr (rng_bits < (sizeof(T) * 8)) { + constexpr unsigned int shift_bits = rng_bits % (sizeof(T) * 8); // silence utterly stupid MSVC and GCC warnings about shifting by too big amount (in which case this branch is not even taken however) + result = (result << shift_bits) ^ static_cast(rng()); + } else { + result = static_cast(rng()); + } + } + if (required_entropy_bits >= (sizeof(T) * 8)) { + return static_cast(result); + } else { + return static_cast(result & ((static_cast(1) << required_entropy_bits) - static_cast(1))); + } +} + +template +struct uniform_real_distribution { +private: + T a; + T b; + +public: + inline uniform_real_distribution(T a_, T b_) + : a(a_) + , b(b_) { + return; + } + template + inline T operator()(Trng & rng) const { + const int mantissa_bits = std::numeric_limits::digits; + return ((b - a) * static_cast(mpt::random(rng)) / static_cast((static_cast(1u) << mantissa_bits))) + a; + } +}; + + +template +inline T random(Trng & rng, T min, T max) { + static_assert(!std::numeric_limits::is_integer); + typedef mpt::uniform_real_distribution dis_type; + dis_type dis(min, max); + return static_cast(dis(rng)); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_RANDOM_HPP Property changes on: src/mpt/random/random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/seed.hpp =================================================================== --- src/mpt/random/seed.hpp (nonexistent) +++ src/mpt/random/seed.hpp (working copy) @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_RANDOM_SEED_HPP +#define MPT_RANDOM_SEED_HPP + + + +#include "mpt/base/namespace.hpp" + +#include + +#include + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +template +class seed_seq_values { +private: + std::array seeds; + +public: + template + explicit seed_seq_values(Trd & rd) { + for (std::size_t i = 0; i < N; ++i) { + seeds[i] = rd(); + } + } + const unsigned int * begin() const { + return seeds.data(); + } + const unsigned int * end() const { + return seeds.data() + N; + } +}; + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_RANDOM_SEED_HPP Property changes on: src/mpt/random/seed.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/tests/tests_random.hpp =================================================================== --- src/mpt/random/tests/tests_random.hpp (nonexistent) +++ src/mpt/random/tests/tests_random.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_RANDOM_HPP +#define MPT_BASE_TESTS_RANDOM_HPP + + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/random/random.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace random { + +MPT_TEST_GROUP_INLINE("mpt/random") +{ + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + + bool failed = false; + + for (std::size_t i = 0; i < 10000; ++i) { + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 1u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0u, 1u); + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 1); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0, 1); + + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0f, 1.0f), 0.0f, 1.0f); + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0, 1.0), 0.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 1.0), -1.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 0.0), -1.0, 0.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 2.0), 1.0, 2.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 3.0), 1.0, 3.0); + } + + MPT_TEST_EXPECT_EXPR(!failed); +} + +} // namespace random +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_RANDOM_HPP Property changes on: src/mpt/random/tests/tests_random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/random/tests/tests_random.hpp =================================================================== --- src/mpt/random/tests/tests_random.hpp (nonexistent) +++ src/mpt/random/tests/tests_random.hpp (working copy) @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_RANDOM_HPP +#define MPT_BASE_TESTS_RANDOM_HPP + + + +#include "mpt/base/algorithm.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/random/random.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace random { + +MPT_TEST_GROUP_INLINE("mpt/random") +{ + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + + bool failed = false; + + for (std::size_t i = 0; i < 10000; ++i) { + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0u, 1u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0u, 127u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0u, 255u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0u, 511u); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0u, 1u); + + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng), 0, 1); + failed = failed || !mpt::is_in_range(mpt::random(prng, 7), 0, 127); + failed = failed || !mpt::is_in_range(mpt::random(prng, 8), 0, 255); + failed = failed || !mpt::is_in_range(mpt::random(prng, 9), 0, 511); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1), 0, 1); + + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0f, 1.0f), 0.0f, 1.0f); + failed = failed || !mpt::is_in_range(mpt::random(prng, 0.0, 1.0), 0.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 1.0), -1.0, 1.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, -1.0, 0.0), -1.0, 0.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 2.0), 1.0, 2.0); + failed = failed || !mpt::is_in_range(mpt::random(prng, 1.0, 3.0), 1.0, 3.0); + } + + MPT_TEST_EXPECT_EXPR(!failed); +} + +} // namespace random +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_RANDOM_HPP Property changes on: src/mpt/random/tests/tests_random.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/buffer.hpp =================================================================== --- src/mpt/string/buffer.hpp (nonexistent) +++ src/mpt/string/buffer.hpp (working copy) @@ -0,0 +1,344 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_BUFFER_HPP +#define MPT_STRING_BUFFER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include +#include +#include + +#include +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + + +template +class StringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, buf + len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } + StringBufRefImpl & operator=(const Tstring & str) { + std::copy(str.data(), str.data() + std::min(str.length(), size - 1), buf); + std::fill(buf + std::min(str.length(), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class StringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } +}; + + + +template +inline StringBufRefImpl::type> ReadTypedBuf(const std::array & buf) { + return StringBufRefImpl::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(std::array & buf) { + return StringBufRefImpl(buf.data(), size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar (&buf)[size]) { + return StringBufRefImpl(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl(buf, size); +} + + + +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const std::array & buf) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(std::array & buf) { + return StringBufRefImpl::type>, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} + + + +#if MPT_OS_WINDOWS + +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const std::array & buf) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(std::array & buf) { + return StringBufRefImpl::type>::string_type, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_DETECTED_MFC + +template +class CStringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } + CStringBufRefImpl & operator=(const CString & str) { + std::copy(str.GetString(), str.GetString() + std::min(static_cast(str.GetLength()), size - 1), buf); + std::fill(buf + std::min(static_cast(str.GetLength()), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class CStringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } +}; + +template +inline CStringBufRefImpl::type> ReadCStringBuf(const std::array & buf) { + return CStringBufRefImpl::type>(buf.data(), size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar (&buf)[size]) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar * buf, std::size_t size) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(std::array & buf) { + return CStringBufRefImpl(buf.data(), size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar (&buf)[size]) { + return CStringBufRefImpl(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar * buf, std::size_t size) { + return CStringBufRefImpl(buf, size); +} + +#endif // MPT_DETECTED_MFC + + + +template +struct charbuf { +public: + using Tchar = char; + using char_type = Tchar; + using string_type = std::basic_string; + using string_view_type = std::basic_string_view; + constexpr std::size_t static_length() const { + return len; + } + +public: + Tchar buf[len]; + +public: + charbuf() { + std::fill(std::begin(buf), std::end(buf), Tchar('\0')); + } + charbuf(const charbuf &) = default; + charbuf(charbuf &&) = default; + charbuf & operator=(const charbuf &) = default; + charbuf & operator=(charbuf &&) = default; + const Tchar & operator[](std::size_t i) const { + return buf[i]; + } + std::string str() const { + return static_cast(*this); + } + operator string_type() const { + return mpt::ReadAutoBuf(buf); + } + explicit operator string_view_type() const { + return static_cast(mpt::ReadAutoBuf(buf)); + } + bool empty() const { + return mpt::ReadAutoBuf(buf).empty(); + } + charbuf & operator=(const string_type & str) { + mpt::WriteAutoBuf(buf) = str; + return *this; + } + +public: + friend bool operator!=(const charbuf & a, const charbuf & b) { + return static_cast(a) != static_cast(b); + } + friend bool operator!=(const std::string & a, const charbuf & b) { + return a != static_cast(b); + } + friend bool operator!=(const charbuf & a, const std::string & b) { + return static_cast(a) != b; + } + friend bool operator==(const charbuf & a, const charbuf & b) { + return static_cast(a) == static_cast(b); + } + friend bool operator==(const std::string & a, const charbuf & b) { + return a == static_cast(b); + } + friend bool operator==(const charbuf & a, const std::string & b) { + return static_cast(a) == b; + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_BUFFER_HPP Property changes on: src/mpt/string/buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_buffer.hpp =================================================================== --- src/mpt/string/tests/tests_string_buffer.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_buffer.hpp (working copy) @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_BUFFER_HPP +#define MPT_STRING_TESTS_STRING_BUFFER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/buffer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace buffer { + +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +{ + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteAutoBuf(buf) = std::string("foobar"); + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + char foobar[] = {'f', 'o', 'o', 'b', 'a', 'r', '\0'}; + mpt::WriteTypedBuf(buf) = (char *)foobar; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = (const char *)"foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = "foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + const char buf[4] = {'f', 'o', 'o', 'b'}; + std::string foo = mpt::ReadAutoBuf(buf); + MPT_TEST_EXPECT_EQUAL(foo, std::string("foob")); + } +} + +} // namespace buffer +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_BUFFER_HPP Property changes on: src/mpt/string/tests/tests_string_buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_utility.hpp =================================================================== --- src/mpt/string/tests/tests_string_utility.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_utility.hpp (working copy) @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_UTILITY_HPP +#define MPT_STRING_TESTS_STRING_UTILITY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace utility { + +MPT_TEST_GROUP_INLINE("mpt/string/utility") +{ + MPT_TEST_EXPECT_EQUAL(mpt::trim_left(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string(" ")), ""); + + // weird things with std::string containing \0 in the middle and trimming \0 + MPT_TEST_EXPECT_EQUAL(std::string("\0\ta\0b ", 6).length(), (std::size_t)6); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string("\0\ta\0b ", 6)), std::string("\0\ta\0b", 5)); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string("\0\ta\0b\0", 6), std::string("\0", 1)), std::string("\ta\0b", 4)); +} + +} // namespace utility +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_UTILITY_HPP Property changes on: src/mpt/string/tests/tests_string_utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/types.hpp =================================================================== --- src/mpt/string/types.hpp (nonexistent) +++ src/mpt/string/types.hpp (working copy) @@ -0,0 +1,407 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TYPES_HPP +#define MPT_STRING_TYPES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +enum class common_encoding +{ + utf8, + ascii, // strictly 7-bit ASCII + iso8859_1, + iso8859_15, + cp850, + cp437, + windows1252, +}; + + +enum class logical_encoding +{ + locale, // CP_ACP on windows, system configured C locale otherwise + active_locale, // active C/C++ global locale +}; + +// source code / preprocessor (i.e. # token) +inline constexpr auto source_encoding = common_encoding::ascii; + +// debug log files +inline constexpr auto logfile_encoding = common_encoding::utf8; + +// std::clog / std::cout / std::cerr +inline constexpr auto stdio_encoding = logical_encoding::locale; + +// getenv +inline constexpr auto environment_encoding = logical_encoding::locale; + +// std::exception::what() +inline constexpr auto exception_encoding = logical_encoding::active_locale; + + + + + +template +struct is_character : public std::false_type { }; + +template <> +struct is_character : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_character : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_character : public std::true_type { }; +#endif // C++20 +template <> +struct is_character : public std::true_type { }; +template <> +struct is_character : public std::true_type { }; + + + + + +template +MPT_CONSTEXPRINLINE unsigned char char_value(T x) noexcept = delete; + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char x) noexcept { + return static_cast(x); +} + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(unsigned char x) noexcept { + return static_cast(x); +} + +#if MPT_CXX_AT_LEAST(20) +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char8_t x) noexcept { + return static_cast(x); +} +#endif // C++20 + + + + + +template +struct unsafe_char_converter { }; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(wchar_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr wchar_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char8_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char8_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // C++20 + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char16_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char16_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char32_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template +constexpr Tdstchar unsafe_char_convert(Tsrcchar src) noexcept { + return mpt::unsafe_char_converter::encode(mpt::unsafe_char_converter::decode(src)); +} + + + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +using widestring = std::wstring; +using widechar = wchar_t; +#define MPT_WIDECHAR(x) L##x +#define MPT_WIDELITERAL(x) L##x +#define MPT_WIDESTRING(x) std::wstring(L##x) +#else // MPT_COMPILER_QUIRK_NO_WCHAR +using widestring = std::u32string; +using widechar = char32_t; +#define MPT_WIDECHAR(x) U##x +#define MPT_WIDELITERAL(x) U##x +#define MPT_WIDESTRING(x) std::u32string(U##x) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +template +struct common_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return common_encoding_tag; + } +}; + +template +struct logical_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return logical_encoding_tag; + } +}; + + + +using lstring = std::basic_string>; + +using source_string = std::basic_string>; +using exception_string = std::basic_string>; + +#if MPT_OS_WINDOWS + +template +struct windows_char_traits { }; +template <> +struct windows_char_traits { using string_type = mpt::lstring; }; +template <> +struct windows_char_traits { using string_type = std::wstring; }; + +using tstring = windows_char_traits::string_type; + +using winstring = mpt::tstring; + +#endif // MPT_OS_WINDOWS + + + +#if MPT_CXX_AT_LEAST(20) + +using u8string = std::u8string; +using u8char = char8_t; +#define MPT_U8CHAR(x) u8##x +#define MPT_U8LITERAL(x) u8##x +#define MPT_U8STRING(x) std::u8string(u8##x) + +#else // !C++20 + +using u8string = std::basic_string>; +using u8char = char; +#define MPT_U8CHAR(x) x +#define MPT_U8LITERAL(x) x +#define MPT_U8STRING(x) mpt::u8string(x) + +// mpt::u8string is a moderately type-safe string that is meant to contain +// UTF-8 encoded char bytes. +// +// mpt::u8string is not implicitely convertible to/from std::string, but +// it is convertible to/from C strings the same way as std::string is. +// +// The implementation of mpt::u8string is a compromise of compatibilty +// with implementation-defined STL details, efficiency, source code size, +// executable bloat, type-safety and simplicity. +// +// mpt::u8string is not meant to be used directly though. +// mpt::u8string is meant as an alternative implementaion to std::wstring +// for implementing the unicode string type mpt::ustring. + +#endif // C++20 + + + +#if !defined(MPT_USTRING_MODE_UTF8_FORCE) && (MPT_COMPILER_MSVC || (MPT_DETECTED_MFC && defined(UNICODE))) +// Use wide strings for MSVC because this is the native encoding on +// microsoft platforms. +#define MPT_USTRING_MODE_WIDE 1 +#define MPT_USTRING_MODE_UTF8 0 +#else +#define MPT_USTRING_MODE_WIDE 0 +#define MPT_USTRING_MODE_UTF8 1 +#endif + +// mpt::ustring +// +// mpt::ustring is a string type that can hold unicode strings. +// It is implemented as a std::basic_string either based on wchar_t (i.e. the +// same as std::wstring) or a custom-defined char_traits class that is derived +// from std::char_traits. +// The selection of the underlying implementation is done at compile-time. +// MPT_UCHAR, MPT_ULITERAL and MPT_USTRING are macros that ease construction +// of ustring char literals, ustring char array literals and ustring objects +// from ustring char literals that work consistently in both modes. +// Note that these are not supported for non-ASCII characters appearing in +// the macro argument. +// Also note that, as both UTF8 and UTF16 (it is less of an issue for UTF32) +// are variable-length encodings and mpt::ustring is implemented as a +// std::basic_string, all member functions that require individual character +// access will not work consistently or even at all in a meaningful way. +// This in particular affects operator[], find() and substr(). +// The code makes no effort in preventing these or generating warnings when +// these are used on mpt::ustring objects. However, compiling in the +// respectively other mpt::ustring mode will catch most of these anyway. + +#if MPT_USTRING_MODE_WIDE +#if MPT_USTRING_MODE_UTF8 +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = std::wstring; +using uchar = wchar_t; +#define MPT_UCHAR(x) L##x +#define MPT_ULITERAL(x) L##x +#define MPT_USTRING(x) std::wstring(L##x) + +#endif // MPT_USTRING_MODE_WIDE + +#if MPT_USTRING_MODE_UTF8 +#if MPT_USTRING_MODE_WIDE +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = mpt::u8string; +using uchar = mpt::u8char; +#define MPT_UCHAR(x) MPT_U8CHAR(x) +#define MPT_ULITERAL(x) MPT_U8LITERAL(x) +#define MPT_USTRING(x) MPT_U8STRING(x) + +#endif // MPT_USTRING_MODE_UTF8 + + + +template +struct make_string_type { }; + +template +struct make_string_type> { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = typename make_string_type::type; +}; + +#if MPT_DETECTED_MFC + +template <> +struct make_string_type { + using type = CStringW; +}; + +template <> +struct make_string_type { + using type = CStringA; +}; + +#endif // MPT_DETECTED_MFC + + + +template +struct is_string_type : public std::false_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_string_type : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_string_type : public std::true_type { }; +#endif // C++20 +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if MPT_DETECTED_MFC +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#endif // MPT_DETECTED_MFC +template +struct is_string_type> : public std::true_type { }; + + + +template +inline typename mpt::make_string_type::type as_string(const T & str) { + if constexpr (std::is_pointer::type>::value) { + return str ? typename mpt::make_string_type::type{str} : typename mpt::make_string_type::type{}; + } else { + return str; + } +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TYPES_HPP Property changes on: src/mpt/string/types.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/utility.hpp =================================================================== --- src/mpt/string/utility.hpp (nonexistent) +++ src/mpt/string/utility.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_UTILITY_HPP +#define MPT_STRING_UTILITY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// string_traits abstract the API of underlying string classes, in particular they allow adopting to CString without having to specialize for CString explicitly + +template +struct string_traits { + + using string_type = Tstring; + using size_type = typename string_type::size_type; + using char_type = typename string_type::value_type; + + static inline std::size_t length(const string_type & str) { + return str.length(); + } + + static inline void reserve(string_type & str, std::size_t size) { + str.reserve(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + return str.append(a); + } + static inline string_type & append(string_type & str, string_type && a) { + return str.append(std::move(a)); + } + static inline string_type & append(string_type & str, std::size_t count, char_type c) { + return str.append(count, c); + } + + static inline string_type pad(string_type str, std::size_t left, std::size_t right) { + str.insert(str.begin(), left, char_type(' ')); + str.insert(str.end(), right, char_type(' ')); + return str; + } +}; + +#if MPT_DETECTED_MFC + +template <> +struct string_traits { + + using string_type = CStringA; + using size_type = int; + using char_type = typename CStringA::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +template <> +struct string_traits { + + using string_type = CStringW; + using size_type = int; + using char_type = typename CStringW::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +#endif // MPT_DETECTED_MFC + + +template +struct char_constants { + static inline constexpr Tchar space = ' '; + static inline constexpr Tchar a = 'a'; + static inline constexpr Tchar z = 'z'; + static inline constexpr Tchar A = 'A'; + static inline constexpr Tchar Z = 'Z'; + static inline constexpr Tchar lf = '\n'; + static inline constexpr Tchar cr = '\r'; + static inline constexpr Tchar tab = '\t'; + static inline constexpr Tchar comma = ','; +}; + +template <> +struct char_constants { + static inline constexpr char space = ' '; + static inline constexpr char a = 'a'; + static inline constexpr char z = 'z'; + static inline constexpr char A = 'A'; + static inline constexpr char Z = 'Z'; + static inline constexpr char lf = '\n'; + static inline constexpr char cr = '\r'; + static inline constexpr char tab = '\t'; + static inline constexpr char comma = ','; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct char_constants { + static inline constexpr wchar_t space = L' '; + static inline constexpr wchar_t a = L'a'; + static inline constexpr wchar_t z = L'z'; + static inline constexpr wchar_t A = L'A'; + static inline constexpr wchar_t Z = L'Z'; + static inline constexpr wchar_t lf = L'\n'; + static inline constexpr wchar_t cr = L'\r'; + static inline constexpr wchar_t tab = L'\t'; + static inline constexpr wchar_t comma = L','; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct char_constants { + static inline constexpr char8_t space = u8' '; + static inline constexpr char8_t a = u8'a'; + static inline constexpr char8_t z = u8'z'; + static inline constexpr char8_t A = u8'A'; + static inline constexpr char8_t Z = u8'Z'; + static inline constexpr char8_t lf = u8'\n'; + static inline constexpr char8_t cr = u8'\r'; + static inline constexpr char8_t tab = u8'\t'; + static inline constexpr char8_t comma = u8','; +}; +#endif + +template <> +struct char_constants { + static inline constexpr char16_t space = u' '; + static inline constexpr char16_t a = u'a'; + static inline constexpr char16_t z = u'z'; + static inline constexpr char16_t A = u'A'; + static inline constexpr char16_t Z = u'Z'; + static inline constexpr char16_t lf = u'\n'; + static inline constexpr char16_t cr = u'\r'; + static inline constexpr char16_t tab = u'\t'; + static inline constexpr char16_t comma = u','; +}; + +template <> +struct char_constants { + static inline constexpr char32_t space = U' '; + static inline constexpr char32_t a = U'a'; + static inline constexpr char32_t z = U'z'; + static inline constexpr char32_t A = U'A'; + static inline constexpr char32_t Z = U'Z'; + static inline constexpr char32_t lf = U'\n'; + static inline constexpr char32_t cr = U'\r'; + static inline constexpr char32_t tab = U'\t'; + static inline constexpr char32_t comma = U','; +}; + + +template +inline Tstring default_whitespace() { + Tstring result; + result.reserve(4); + result.push_back(char_constants::space); + result.push_back(char_constants::lf); + result.push_back(char_constants::cr); + result.push_back(char_constants::tab); + return result; +} + + +// Remove whitespace at start of string +template +inline Tstring trim_left(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_first_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin(), str.begin() + pos); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_last_of(whitespace) == str.length() - 1) { + return Tstring(); + } + return str; +} + +// Remove whitespace at end of string +template +inline Tstring trim_right(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_last_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin() + pos + 1, str.end()); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_first_of(whitespace) == 0) { + return Tstring(); + } + return str; +} + +// Remove whitespace at start and end of string +template +inline Tstring trim(Tstring str, const Tstring & whitespace = default_whitespace()) { + return trim_right(trim_left(str, whitespace), whitespace); +} + + +template +inline bool starts_with(const Tstring & str, const Tmatch & match) { + return (str.find(typename mpt::make_string_type::type{match}) == 0); +} + +template +inline bool ends_with(const Tstring & str, const Tmatch & match) { + return (str.rfind(typename mpt::make_string_type::type{match}) == (str.length() - typename mpt::make_string_type::type{match}.length())); +} + + +template +inline constexpr Tchar to_lower_ascii(Tchar c) noexcept { + if (char_constants::A <= c && c <= char_constants::Z) { + c += char_constants::a - char_constants::A; + } + return c; +} + +template +inline constexpr Tchar to_upper_ascii(Tchar c) noexcept { + if (char_constants::a <= c && c <= char_constants::z) { + c -= char_constants::a - char_constants::A; + } + return c; +} + + + +template +inline std::vector split(const Tstring & str, const Tstring & sep = Tstring(1, char_constants::comma)) { + std::vector vals; + std::size_t pos = 0; + while (str.find(sep, pos) != std::string::npos) { + vals.push_back(str.substr(pos, str.find(sep, pos) - pos)); + pos = str.find(sep, pos) + sep.length(); + } + if (!vals.empty() || (str.substr(pos).length() > 0)) { + vals.push_back(str.substr(pos)); + } + return vals; +} + + + +template +inline Tstring combine(const std::vector & vals, const Tstring & sep = Tstring(1, char_constants::comma)) { + Tstring str; + for (std::size_t i = 0; i < vals.size(); ++i) { + if (i > 0) { + str += sep; + } + str += vals[i]; + } + return str; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_UTILITY_HPP Property changes on: src/mpt/string/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/buffer.hpp =================================================================== --- src/mpt/string/buffer.hpp (nonexistent) +++ src/mpt/string/buffer.hpp (working copy) @@ -0,0 +1,344 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_BUFFER_HPP +#define MPT_STRING_BUFFER_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#include +#include +#include +#include + +#include +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + + +template +class StringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, buf + len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } + StringBufRefImpl & operator=(const Tstring & str) { + std::copy(str.data(), str.data() + std::min(str.length(), size - 1), buf); + std::fill(buf + std::min(str.length(), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class StringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit StringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + static_assert(sizeof(Tchar) == sizeof(typename Tstring::value_type)); + assert(size > 0); + } + StringBufRefImpl(const StringBufRefImpl &) = delete; + StringBufRefImpl(StringBufRefImpl &&) = default; + StringBufRefImpl & operator=(const StringBufRefImpl &) = delete; + StringBufRefImpl & operator=(StringBufRefImpl &&) = delete; + operator Tstring() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return Tstring(buf, buf + len); + } + explicit operator std::basic_string_view() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return std::basic_string_view(buf, len); + } + bool empty() const { + return buf[0] == Tchar('\0'); + } +}; + + + +template +inline StringBufRefImpl::type> ReadTypedBuf(const std::array & buf) { + return StringBufRefImpl::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl::type> ReadTypedBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(std::array & buf) { + return StringBufRefImpl(buf.data(), size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar (&buf)[size]) { + return StringBufRefImpl(buf, size); +} +template +inline StringBufRefImpl WriteTypedBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl(buf, size); +} + + + +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const std::array & buf) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, typename std::add_const::type> ReadAutoBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(std::array & buf) { + return StringBufRefImpl::type>, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>, Tchar> WriteAutoBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>, Tchar>(buf, size); +} + + + +#if MPT_OS_WINDOWS + +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const std::array & buf) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, typename std::add_const::type> ReadWinBuf(const Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, typename std::add_const::type>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(std::array & buf) { + return StringBufRefImpl::type>::string_type, Tchar>(buf.data(), size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar (&buf)[size]) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} +template +inline StringBufRefImpl::type>::string_type, Tchar> WriteWinBuf(Tchar * buf, std::size_t size) { + return StringBufRefImpl::type>::string_type, Tchar>(buf, size); +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_DETECTED_MFC + +template +class CStringBufRefImpl { +private: + Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } + CStringBufRefImpl & operator=(const CString & str) { + std::copy(str.GetString(), str.GetString() + std::min(static_cast(str.GetLength()), size - 1), buf); + std::fill(buf + std::min(static_cast(str.GetLength()), size - 1), buf + size, Tchar('\0')); + return *this; + } +}; + +template +class CStringBufRefImpl { +private: + const Tchar * buf; + std::size_t size; + +public: + // cppcheck false-positive + // cppcheck-suppress uninitMemberVar + explicit CStringBufRefImpl(const Tchar * buf_, std::size_t size_) + : buf(buf_) + , size(size_) { + assert(size > 0); + } + CStringBufRefImpl(const CStringBufRefImpl &) = delete; + CStringBufRefImpl(CStringBufRefImpl &&) = default; + CStringBufRefImpl & operator=(const CStringBufRefImpl &) = delete; + CStringBufRefImpl & operator=(CStringBufRefImpl &&) = delete; + operator CString() const { + std::size_t len = std::find(buf, buf + size, Tchar('\0')) - buf; // terminate at \0 + return CString(buf, mpt::saturate_cast(len)); + } +}; + +template +inline CStringBufRefImpl::type> ReadCStringBuf(const std::array & buf) { + return CStringBufRefImpl::type>(buf.data(), size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar (&buf)[size]) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl::type> ReadCStringBuf(const Tchar * buf, std::size_t size) { + return CStringBufRefImpl::type>(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(std::array & buf) { + return CStringBufRefImpl(buf.data(), size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar (&buf)[size]) { + return CStringBufRefImpl(buf, size); +} +template +inline CStringBufRefImpl WriteCStringBuf(Tchar * buf, std::size_t size) { + return CStringBufRefImpl(buf, size); +} + +#endif // MPT_DETECTED_MFC + + + +template +struct charbuf { +public: + using Tchar = char; + using char_type = Tchar; + using string_type = std::basic_string; + using string_view_type = std::basic_string_view; + constexpr std::size_t static_length() const { + return len; + } + +public: + Tchar buf[len]; + +public: + charbuf() { + std::fill(std::begin(buf), std::end(buf), Tchar('\0')); + } + charbuf(const charbuf &) = default; + charbuf(charbuf &&) = default; + charbuf & operator=(const charbuf &) = default; + charbuf & operator=(charbuf &&) = default; + const Tchar & operator[](std::size_t i) const { + return buf[i]; + } + std::string str() const { + return static_cast(*this); + } + operator string_type() const { + return mpt::ReadAutoBuf(buf); + } + explicit operator string_view_type() const { + return static_cast(mpt::ReadAutoBuf(buf)); + } + bool empty() const { + return mpt::ReadAutoBuf(buf).empty(); + } + charbuf & operator=(const string_type & str) { + mpt::WriteAutoBuf(buf) = str; + return *this; + } + +public: + friend bool operator!=(const charbuf & a, const charbuf & b) { + return static_cast(a) != static_cast(b); + } + friend bool operator!=(const std::string & a, const charbuf & b) { + return a != static_cast(b); + } + friend bool operator!=(const charbuf & a, const std::string & b) { + return static_cast(a) != b; + } + friend bool operator==(const charbuf & a, const charbuf & b) { + return static_cast(a) == static_cast(b); + } + friend bool operator==(const std::string & a, const charbuf & b) { + return a == static_cast(b); + } + friend bool operator==(const charbuf & a, const std::string & b) { + return static_cast(a) == b; + } +}; + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_BUFFER_HPP Property changes on: src/mpt/string/buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_buffer.hpp =================================================================== --- src/mpt/string/tests/tests_string_buffer.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_buffer.hpp (working copy) @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_BUFFER_HPP +#define MPT_STRING_TESTS_STRING_BUFFER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/buffer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace buffer { + +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +{ + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteAutoBuf(buf) = std::string("foobar"); + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + char foobar[] = {'f', 'o', 'o', 'b', 'a', 'r', '\0'}; + mpt::WriteTypedBuf(buf) = (char *)foobar; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = (const char *)"foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = "foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + const char buf[4] = {'f', 'o', 'o', 'b'}; + std::string foo = mpt::ReadAutoBuf(buf); + MPT_TEST_EXPECT_EQUAL(foo, std::string("foob")); + } +} + +} // namespace buffer +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_BUFFER_HPP Property changes on: src/mpt/string/tests/tests_string_buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_utility.hpp =================================================================== --- src/mpt/string/tests/tests_string_utility.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_utility.hpp (working copy) @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_UTILITY_HPP +#define MPT_STRING_TESTS_STRING_UTILITY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace utility { + +MPT_TEST_GROUP_INLINE("mpt/string/utility") +{ + MPT_TEST_EXPECT_EQUAL(mpt::trim_left(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string(" ")), ""); + + // weird things with std::string containing \0 in the middle and trimming \0 + MPT_TEST_EXPECT_EQUAL(std::string("\0\ta\0b ", 6).length(), (std::size_t)6); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string("\0\ta\0b ", 6)), std::string("\0\ta\0b", 5)); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string("\0\ta\0b\0", 6), std::string("\0", 1)), std::string("\ta\0b", 4)); +} + +} // namespace utility +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_UTILITY_HPP Property changes on: src/mpt/string/tests/tests_string_utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_buffer.hpp =================================================================== --- src/mpt/string/tests/tests_string_buffer.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_buffer.hpp (working copy) @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_BUFFER_HPP +#define MPT_STRING_TESTS_STRING_BUFFER_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/buffer.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace buffer { + +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +{ + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteAutoBuf(buf) = std::string("foobar"); + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + char foobar[] = {'f', 'o', 'o', 'b', 'a', 'r', '\0'}; + mpt::WriteTypedBuf(buf) = (char *)foobar; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = (const char *)"foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + char buf[4] = {'x', 'x', 'x', 'x'}; + mpt::WriteTypedBuf(buf) = "foobar"; + MPT_TEST_EXPECT_EQUAL(buf[0], 'f'); + MPT_TEST_EXPECT_EQUAL(buf[1], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[2], 'o'); + MPT_TEST_EXPECT_EQUAL(buf[3], '\0'); + } + { + const char buf[4] = {'f', 'o', 'o', 'b'}; + std::string foo = mpt::ReadAutoBuf(buf); + MPT_TEST_EXPECT_EQUAL(foo, std::string("foob")); + } +} + +} // namespace buffer +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_BUFFER_HPP Property changes on: src/mpt/string/tests/tests_string_buffer.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/tests/tests_string_utility.hpp =================================================================== --- src/mpt/string/tests/tests_string_utility.hpp (nonexistent) +++ src/mpt/string/tests/tests_string_utility.hpp (working copy) @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TESTS_STRING_UTILITY_HPP +#define MPT_STRING_TESTS_STRING_UTILITY_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string/utility.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + +#include + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string { +namespace utility { + +MPT_TEST_GROUP_INLINE("mpt/string/utility") +{ + MPT_TEST_EXPECT_EQUAL(mpt::trim_left(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string(" ")), ""); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string(" ")), ""); + + // weird things with std::string containing \0 in the middle and trimming \0 + MPT_TEST_EXPECT_EQUAL(std::string("\0\ta\0b ", 6).length(), (std::size_t)6); + MPT_TEST_EXPECT_EQUAL(mpt::trim_right(std::string("\0\ta\0b ", 6)), std::string("\0\ta\0b", 5)); + MPT_TEST_EXPECT_EQUAL(mpt::trim(std::string("\0\ta\0b\0", 6), std::string("\0", 1)), std::string("\ta\0b", 4)); +} + +} // namespace utility +} // namespace string +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TESTS_STRING_UTILITY_HPP Property changes on: src/mpt/string/tests/tests_string_utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/types.hpp =================================================================== --- src/mpt/string/types.hpp (nonexistent) +++ src/mpt/string/types.hpp (working copy) @@ -0,0 +1,407 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_TYPES_HPP +#define MPT_STRING_TYPES_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +enum class common_encoding +{ + utf8, + ascii, // strictly 7-bit ASCII + iso8859_1, + iso8859_15, + cp850, + cp437, + windows1252, +}; + + +enum class logical_encoding +{ + locale, // CP_ACP on windows, system configured C locale otherwise + active_locale, // active C/C++ global locale +}; + +// source code / preprocessor (i.e. # token) +inline constexpr auto source_encoding = common_encoding::ascii; + +// debug log files +inline constexpr auto logfile_encoding = common_encoding::utf8; + +// std::clog / std::cout / std::cerr +inline constexpr auto stdio_encoding = logical_encoding::locale; + +// getenv +inline constexpr auto environment_encoding = logical_encoding::locale; + +// std::exception::what() +inline constexpr auto exception_encoding = logical_encoding::active_locale; + + + + + +template +struct is_character : public std::false_type { }; + +template <> +struct is_character : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_character : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_character : public std::true_type { }; +#endif // C++20 +template <> +struct is_character : public std::true_type { }; +template <> +struct is_character : public std::true_type { }; + + + + + +template +MPT_CONSTEXPRINLINE unsigned char char_value(T x) noexcept = delete; + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char x) noexcept { + return static_cast(x); +} + +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(unsigned char x) noexcept { + return static_cast(x); +} + +#if MPT_CXX_AT_LEAST(20) +template <> +MPT_CONSTEXPRINLINE unsigned char char_value(char8_t x) noexcept { + return static_cast(x); +} +#endif // C++20 + + + + + +template +struct unsafe_char_converter { }; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(wchar_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr wchar_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char8_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char8_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; +#endif // C++20 + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char16_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char16_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template <> +struct unsafe_char_converter { + static constexpr char32_t decode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } + static constexpr char32_t encode(char32_t c) noexcept { + return static_cast(static_cast(static_cast(c))); + } +}; + +template +constexpr Tdstchar unsafe_char_convert(Tsrcchar src) noexcept { + return mpt::unsafe_char_converter::encode(mpt::unsafe_char_converter::decode(src)); +} + + + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +using widestring = std::wstring; +using widechar = wchar_t; +#define MPT_WIDECHAR(x) L##x +#define MPT_WIDELITERAL(x) L##x +#define MPT_WIDESTRING(x) std::wstring(L##x) +#else // MPT_COMPILER_QUIRK_NO_WCHAR +using widestring = std::u32string; +using widechar = char32_t; +#define MPT_WIDECHAR(x) U##x +#define MPT_WIDELITERAL(x) U##x +#define MPT_WIDESTRING(x) std::u32string(U##x) +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +template +struct common_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return common_encoding_tag; + } +}; + +template +struct logical_encoding_char_traits : std::char_traits { + static constexpr auto encoding() noexcept { + return logical_encoding_tag; + } +}; + + + +using lstring = std::basic_string>; + +using source_string = std::basic_string>; +using exception_string = std::basic_string>; + +#if MPT_OS_WINDOWS + +template +struct windows_char_traits { }; +template <> +struct windows_char_traits { using string_type = mpt::lstring; }; +template <> +struct windows_char_traits { using string_type = std::wstring; }; + +using tstring = windows_char_traits::string_type; + +using winstring = mpt::tstring; + +#endif // MPT_OS_WINDOWS + + + +#if MPT_CXX_AT_LEAST(20) + +using u8string = std::u8string; +using u8char = char8_t; +#define MPT_U8CHAR(x) u8##x +#define MPT_U8LITERAL(x) u8##x +#define MPT_U8STRING(x) std::u8string(u8##x) + +#else // !C++20 + +using u8string = std::basic_string>; +using u8char = char; +#define MPT_U8CHAR(x) x +#define MPT_U8LITERAL(x) x +#define MPT_U8STRING(x) mpt::u8string(x) + +// mpt::u8string is a moderately type-safe string that is meant to contain +// UTF-8 encoded char bytes. +// +// mpt::u8string is not implicitely convertible to/from std::string, but +// it is convertible to/from C strings the same way as std::string is. +// +// The implementation of mpt::u8string is a compromise of compatibilty +// with implementation-defined STL details, efficiency, source code size, +// executable bloat, type-safety and simplicity. +// +// mpt::u8string is not meant to be used directly though. +// mpt::u8string is meant as an alternative implementaion to std::wstring +// for implementing the unicode string type mpt::ustring. + +#endif // C++20 + + + +#if !defined(MPT_USTRING_MODE_UTF8_FORCE) && (MPT_COMPILER_MSVC || (MPT_DETECTED_MFC && defined(UNICODE))) +// Use wide strings for MSVC because this is the native encoding on +// microsoft platforms. +#define MPT_USTRING_MODE_WIDE 1 +#define MPT_USTRING_MODE_UTF8 0 +#else +#define MPT_USTRING_MODE_WIDE 0 +#define MPT_USTRING_MODE_UTF8 1 +#endif + +// mpt::ustring +// +// mpt::ustring is a string type that can hold unicode strings. +// It is implemented as a std::basic_string either based on wchar_t (i.e. the +// same as std::wstring) or a custom-defined char_traits class that is derived +// from std::char_traits. +// The selection of the underlying implementation is done at compile-time. +// MPT_UCHAR, MPT_ULITERAL and MPT_USTRING are macros that ease construction +// of ustring char literals, ustring char array literals and ustring objects +// from ustring char literals that work consistently in both modes. +// Note that these are not supported for non-ASCII characters appearing in +// the macro argument. +// Also note that, as both UTF8 and UTF16 (it is less of an issue for UTF32) +// are variable-length encodings and mpt::ustring is implemented as a +// std::basic_string, all member functions that require individual character +// access will not work consistently or even at all in a meaningful way. +// This in particular affects operator[], find() and substr(). +// The code makes no effort in preventing these or generating warnings when +// these are used on mpt::ustring objects. However, compiling in the +// respectively other mpt::ustring mode will catch most of these anyway. + +#if MPT_USTRING_MODE_WIDE +#if MPT_USTRING_MODE_UTF8 +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = std::wstring; +using uchar = wchar_t; +#define MPT_UCHAR(x) L##x +#define MPT_ULITERAL(x) L##x +#define MPT_USTRING(x) std::wstring(L##x) + +#endif // MPT_USTRING_MODE_WIDE + +#if MPT_USTRING_MODE_UTF8 +#if MPT_USTRING_MODE_WIDE +#error "MPT_USTRING_MODE_WIDE and MPT_USTRING_MODE_UTF8 are mutually exclusive." +#endif + +using ustring = mpt::u8string; +using uchar = mpt::u8char; +#define MPT_UCHAR(x) MPT_U8CHAR(x) +#define MPT_ULITERAL(x) MPT_U8LITERAL(x) +#define MPT_USTRING(x) MPT_U8STRING(x) + +#endif // MPT_USTRING_MODE_UTF8 + + + +template +struct make_string_type { }; + +template +struct make_string_type> { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = std::basic_string; +}; + +template +struct make_string_type { + using type = typename make_string_type::type; +}; + +#if MPT_DETECTED_MFC + +template <> +struct make_string_type { + using type = CStringW; +}; + +template <> +struct make_string_type { + using type = CStringA; +}; + +#endif // MPT_DETECTED_MFC + + + +template +struct is_string_type : public std::false_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct is_string_type : public std::true_type { }; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#if MPT_CXX_AT_LEAST(20) +template <> +struct is_string_type : public std::true_type { }; +#endif // C++20 +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#if MPT_DETECTED_MFC +template <> +struct is_string_type : public std::true_type { }; +template <> +struct is_string_type : public std::true_type { }; +#endif // MPT_DETECTED_MFC +template +struct is_string_type> : public std::true_type { }; + + + +template +inline typename mpt::make_string_type::type as_string(const T & str) { + if constexpr (std::is_pointer::type>::value) { + return str ? typename mpt::make_string_type::type{str} : typename mpt::make_string_type::type{}; + } else { + return str; + } +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_TYPES_HPP Property changes on: src/mpt/string/types.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string/utility.hpp =================================================================== --- src/mpt/string/utility.hpp (nonexistent) +++ src/mpt/string/utility.hpp (working copy) @@ -0,0 +1,334 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_UTILITY_HPP +#define MPT_STRING_UTILITY_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/detect/mfc.hpp" + +#include +#include + +#include + +#if MPT_DETECTED_MFC +// cppcheck-suppress missingInclude +#include +#endif // MPT_DETECTED_MFC + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +// string_traits abstract the API of underlying string classes, in particular they allow adopting to CString without having to specialize for CString explicitly + +template +struct string_traits { + + using string_type = Tstring; + using size_type = typename string_type::size_type; + using char_type = typename string_type::value_type; + + static inline std::size_t length(const string_type & str) { + return str.length(); + } + + static inline void reserve(string_type & str, std::size_t size) { + str.reserve(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + return str.append(a); + } + static inline string_type & append(string_type & str, string_type && a) { + return str.append(std::move(a)); + } + static inline string_type & append(string_type & str, std::size_t count, char_type c) { + return str.append(count, c); + } + + static inline string_type pad(string_type str, std::size_t left, std::size_t right) { + str.insert(str.begin(), left, char_type(' ')); + str.insert(str.end(), right, char_type(' ')); + return str; + } +}; + +#if MPT_DETECTED_MFC + +template <> +struct string_traits { + + using string_type = CStringA; + using size_type = int; + using char_type = typename CStringA::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +template <> +struct string_traits { + + using string_type = CStringW; + using size_type = int; + using char_type = typename CStringW::XCHAR; + + static inline size_type length(const string_type & str) { + return str.GetLength(); + } + + static inline void reserve(string_type & str, size_type size) { + str.Preallocate(size); + } + + static inline string_type & append(string_type & str, const string_type & a) { + str += a; + return str; + } + static inline string_type & append(string_type & str, size_type count, char_type c) { + while (count--) { + str.AppendChar(c); + } + return str; + } + + static inline string_type pad(const string_type & str, size_type left, size_type right) { + string_type tmp; + while (left--) { + tmp.AppendChar(char_type(' ')); + } + tmp += str; + while (right--) { + tmp.AppendChar(char_type(' ')); + } + return tmp; + } +}; + +#endif // MPT_DETECTED_MFC + + +template +struct char_constants { + static inline constexpr Tchar space = ' '; + static inline constexpr Tchar a = 'a'; + static inline constexpr Tchar z = 'z'; + static inline constexpr Tchar A = 'A'; + static inline constexpr Tchar Z = 'Z'; + static inline constexpr Tchar lf = '\n'; + static inline constexpr Tchar cr = '\r'; + static inline constexpr Tchar tab = '\t'; + static inline constexpr Tchar comma = ','; +}; + +template <> +struct char_constants { + static inline constexpr char space = ' '; + static inline constexpr char a = 'a'; + static inline constexpr char z = 'z'; + static inline constexpr char A = 'A'; + static inline constexpr char Z = 'Z'; + static inline constexpr char lf = '\n'; + static inline constexpr char cr = '\r'; + static inline constexpr char tab = '\t'; + static inline constexpr char comma = ','; +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct char_constants { + static inline constexpr wchar_t space = L' '; + static inline constexpr wchar_t a = L'a'; + static inline constexpr wchar_t z = L'z'; + static inline constexpr wchar_t A = L'A'; + static inline constexpr wchar_t Z = L'Z'; + static inline constexpr wchar_t lf = L'\n'; + static inline constexpr wchar_t cr = L'\r'; + static inline constexpr wchar_t tab = L'\t'; + static inline constexpr wchar_t comma = L','; +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct char_constants { + static inline constexpr char8_t space = u8' '; + static inline constexpr char8_t a = u8'a'; + static inline constexpr char8_t z = u8'z'; + static inline constexpr char8_t A = u8'A'; + static inline constexpr char8_t Z = u8'Z'; + static inline constexpr char8_t lf = u8'\n'; + static inline constexpr char8_t cr = u8'\r'; + static inline constexpr char8_t tab = u8'\t'; + static inline constexpr char8_t comma = u8','; +}; +#endif + +template <> +struct char_constants { + static inline constexpr char16_t space = u' '; + static inline constexpr char16_t a = u'a'; + static inline constexpr char16_t z = u'z'; + static inline constexpr char16_t A = u'A'; + static inline constexpr char16_t Z = u'Z'; + static inline constexpr char16_t lf = u'\n'; + static inline constexpr char16_t cr = u'\r'; + static inline constexpr char16_t tab = u'\t'; + static inline constexpr char16_t comma = u','; +}; + +template <> +struct char_constants { + static inline constexpr char32_t space = U' '; + static inline constexpr char32_t a = U'a'; + static inline constexpr char32_t z = U'z'; + static inline constexpr char32_t A = U'A'; + static inline constexpr char32_t Z = U'Z'; + static inline constexpr char32_t lf = U'\n'; + static inline constexpr char32_t cr = U'\r'; + static inline constexpr char32_t tab = U'\t'; + static inline constexpr char32_t comma = U','; +}; + + +template +inline Tstring default_whitespace() { + Tstring result; + result.reserve(4); + result.push_back(char_constants::space); + result.push_back(char_constants::lf); + result.push_back(char_constants::cr); + result.push_back(char_constants::tab); + return result; +} + + +// Remove whitespace at start of string +template +inline Tstring trim_left(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_first_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin(), str.begin() + pos); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_last_of(whitespace) == str.length() - 1) { + return Tstring(); + } + return str; +} + +// Remove whitespace at end of string +template +inline Tstring trim_right(Tstring str, const Tstring & whitespace = default_whitespace()) { + typename Tstring::size_type pos = str.find_last_not_of(whitespace); + if (pos != Tstring::npos) { + str.erase(str.begin() + pos + 1, str.end()); + } else if (pos == Tstring::npos && str.length() > 0 && str.find_first_of(whitespace) == 0) { + return Tstring(); + } + return str; +} + +// Remove whitespace at start and end of string +template +inline Tstring trim(Tstring str, const Tstring & whitespace = default_whitespace()) { + return trim_right(trim_left(str, whitespace), whitespace); +} + + +template +inline bool starts_with(const Tstring & str, const Tmatch & match) { + return (str.find(typename mpt::make_string_type::type{match}) == 0); +} + +template +inline bool ends_with(const Tstring & str, const Tmatch & match) { + return (str.rfind(typename mpt::make_string_type::type{match}) == (str.length() - typename mpt::make_string_type::type{match}.length())); +} + + +template +inline constexpr Tchar to_lower_ascii(Tchar c) noexcept { + if (char_constants::A <= c && c <= char_constants::Z) { + c += char_constants::a - char_constants::A; + } + return c; +} + +template +inline constexpr Tchar to_upper_ascii(Tchar c) noexcept { + if (char_constants::a <= c && c <= char_constants::z) { + c -= char_constants::a - char_constants::A; + } + return c; +} + + + +template +inline std::vector split(const Tstring & str, const Tstring & sep = Tstring(1, char_constants::comma)) { + std::vector vals; + std::size_t pos = 0; + while (str.find(sep, pos) != std::string::npos) { + vals.push_back(str.substr(pos, str.find(sep, pos) - pos)); + pos = str.find(sep, pos) + sep.length(); + } + if (!vals.empty() || (str.substr(pos).length() > 0)) { + vals.push_back(str.substr(pos)); + } + return vals; +} + + + +template +inline Tstring combine(const std::vector & vals, const Tstring & sep = Tstring(1, char_constants::comma)) { + Tstring str; + for (std::size_t i = 0; i < vals.size(); ++i) { + if (i > 0) { + str += sep; + } + str += vals[i]; + } + return str; +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_UTILITY_HPP Property changes on: src/mpt/string/utility.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/convert.hpp =================================================================== --- src/mpt/string_convert/convert.hpp (nonexistent) +++ src/mpt/string_convert/convert.hpp (working copy) @@ -0,0 +1,1131 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_CONVERT_HPP +#define MPT_STRING_CONVERT_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +/* +default 1:1 mapping +inline constexpr char32_t CharsetTableISO8859_1[256] = { + 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, + 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, + 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, + 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, + 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, + 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, + 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, + 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, + 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, + 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, + 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, + 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, + 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, + 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, + 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, + 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff +}; +*/ + +inline constexpr char32_t CharsetTableISO8859_15[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableWindows1252[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f, + 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableCP850[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00F8, 0x00a3, 0x00D8, 0x00D7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00AE, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00E3, 0x00C3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250c, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00df, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00b5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00b1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00f7, 0x00B8, 0x00b0, 0x00A8, 0x00b7, 0x00B9, 0x00B3, 0x00b2, 0x25a0, 0x00a0}; + +inline constexpr char32_t CharsetTableCP437[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0}; + +template +inline mpt::widestring decode_8bit(const Tsrcstring & str, const char32_t (&table)[256], mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + std::size_t c = static_cast(mpt::char_value(str[i])); + if (c < std::size(table)) { + res.push_back(static_cast(table[c])); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_8bit(const mpt::widestring & str, const char32_t (&table)[256], char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + bool found = false; + // Try non-control characters first. + // In cases where there are actual characters mirrored in this range (like in AMS/AMS2 character sets), + // characters in the common range are preferred this way. + for (std::size_t x = 0x20; x < std::size(table); ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + if (!found) { + // try control characters + for (std::size_t x = 0x00; x < std::size(table) && x < 0x20; ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + } + if (!found) { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_ascii(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_ascii(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_iso8859_1(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + MPT_UNUSED(replacement); + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + res.push_back(static_cast(static_cast(c))); + } + return res; +} + +template +inline Tdststring encode_iso8859_1(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0xff) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + + + +template +inline mpt::widestring decode_utf8(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + const Tsrcstring & in = str; + mpt::widestring out; + // state: + std::size_t charsleft = 0; + char32_t ucs4 = 0; + for (uint8 c : in) { + if (charsleft == 0) { + if ((c & 0x80) == 0x00) { + out.push_back(static_cast(c)); + } else if ((c & 0xE0) == 0xC0) { + ucs4 = c & 0x1F; + charsleft = 1; + } else if ((c & 0xF0) == 0xE0) { + ucs4 = c & 0x0F; + charsleft = 2; + } else if ((c & 0xF8) == 0xF0) { + ucs4 = c & 0x07; + charsleft = 3; + } else { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + } else { + if ((c & 0xC0) != 0x80) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + ucs4 <<= 6; + ucs4 |= c & 0x3F; + charsleft--; + if (charsleft == 0) { + if constexpr (sizeof(mpt::widechar) == 2) { + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(ucs4)); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(hi_sur); + out.push_back(lo_sur); + } + } else { + out.push_back(static_cast(ucs4)); + } + ucs4 = 0; + } + } + } + if (charsleft != 0) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + return out; +} + +template +inline Tdststring encode_utf8(const mpt::widestring & str, char replacement = '?') { + const mpt::widestring & in = str; + Tdststring out; + for (std::size_t i = 0; i < in.length(); i++) { + mpt::widechar wc = in[i]; + char32_t ucs4 = 0; + if constexpr (sizeof(mpt::widechar) == 2) { + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + } else { + ucs4 = static_cast(wc); + } + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + continue; + } + uint8 utf8[6]; + std::size_t numchars = 0; + for (numchars = 0; numchars < 6; numchars++) { + utf8[numchars] = ucs4 & 0x3F; + ucs4 >>= 6; + if (ucs4 == 0) { + break; + } + } + numchars++; + if (numchars == 1) { + out.push_back(utf8[0]); + continue; + } + if (numchars == 2 && utf8[numchars - 1] == 0x01) { + // generate shortest form + out.push_back(utf8[0] | 0x40); + continue; + } + std::size_t charsleft = numchars; + while (charsleft > 0) { + if (charsleft == numchars) { + out.push_back(utf8[charsleft - 1] | (((1 << numchars) - 1) << (8 - numchars))); + } else { + // cppcheck false-positive + // cppcheck-suppress arrayIndexOutOfBounds + out.push_back(utf8[charsleft - 1] | 0x80); + } + charsleft--; + } + } + return out; +} + + + +template +inline Tdststring utf32_from_utf16(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 2); + static_assert(sizeof(typename Tdststring::value_type) == 4); + MPT_UNUSED(replacement); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char16_t wc = static_cast(static_cast(in[i])); + char32_t ucs4 = 0; + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + out.push_back(static_cast(static_cast(ucs4))); + } + return out; +} + +template +inline Tdststring utf16_from_utf32(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 4); + static_assert(sizeof(typename Tdststring::value_type) == 2); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char32_t ucs4 = static_cast(static_cast(in[i])); + if (ucs4 > 0x1fffff) { + out.push_back(static_cast(static_cast(replacement))); + ucs4 = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(static_cast(ucs4))); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(static_cast(hi_sur)); + out.push_back(static_cast(lo_sur)); + } + } + return out; +} + + + +#if MPT_OS_WINDOWS + +inline bool has_codepage(UINT cp) { + return IsValidCodePage(cp) ? true : false; +} + +inline bool windows_has_encoding(common_encoding encoding) { + bool result = false; + switch (encoding) { + case common_encoding::utf8: + result = has_codepage(CP_UTF8); + break; + case common_encoding::ascii: + result = has_codepage(20127); + break; + case common_encoding::iso8859_1: + result = has_codepage(28591); + break; + case common_encoding::iso8859_15: + result = has_codepage(28605); + break; + case common_encoding::cp850: + result = has_codepage(850); + break; + case common_encoding::cp437: + result = has_codepage(437); + break; + case common_encoding::windows1252: + result = has_codepage(1252); + break; + } + return result; +} + +inline bool windows_has_encoding(logical_encoding encoding) { + bool result = false; + switch (encoding) { + case logical_encoding::locale: + result = true; + break; + case logical_encoding::active_locale: + result = false; + break; + } + return result; +} + +inline UINT codepage_from_encoding(logical_encoding encoding) { + UINT result = 0; + switch (encoding) { + case logical_encoding::locale: + result = CP_ACP; + break; + case logical_encoding::active_locale: + result = 0; + break; + } + return result; +} + +inline UINT codepage_from_encoding(common_encoding encoding) { + UINT result = 0; + switch (encoding) { + case common_encoding::utf8: + result = CP_UTF8; + break; + case common_encoding::ascii: + result = 20127; + break; + case common_encoding::iso8859_1: + result = 28591; + break; + case common_encoding::iso8859_15: + result = 28605; + break; + case common_encoding::cp850: + result = 850; + break; + case common_encoding::cp437: + result = 437; + break; + case common_encoding::windows1252: + result = 1252; + break; + } + return result; +} + +template +inline Tdststring encode_codepage(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + Tdststring encoded_string; + int required_size = WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), nullptr, 0, nullptr, nullptr); + if (required_size > 0) { + encoded_string.resize(required_size); + WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), reinterpret_cast(encoded_string.data()), required_size, nullptr, nullptr); + } + return encoded_string; +} + +template +inline mpt::widestring decode_codepage(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + mpt::widestring decoded_string; + int required_size = MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), nullptr, 0); + if (required_size > 0) { + decoded_string.resize(required_size); + MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), decoded_string.data(), required_size); + } + return decoded_string; +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_OS_DJGPP + +inline common_encoding djgpp_get_locale_encoding() { + uint16 active_codepage = 437; + uint16 system_codepage = 437; + __dpmi_regs regs; + std::memset(®s, 0, sizeof(__dpmi_regs)); + regs.x.ax = 0x6601; + if (__dpmi_int(0x21, ®s) == 0) { + int cf = (regs.x.flags >> 0) & 1; + if (cf == 0) { + active_codepage = regs.x.bx; + system_codepage = regs.x.dx; + } + } + common_encoding result = common_encoding::cp437; + if (active_codepage == 0) { + result = common_encoding::cp437; + } else if (active_codepage == 437) { + result = common_encoding::cp437; + } else if (active_codepage == 850) { + result = common_encoding::cp850; + } else if (system_codepage == 437) { + result = common_encoding::cp437; + } else if (system_codepage == 850) { + result = common_encoding::cp850; + } else { + result = common_encoding::cp437; + } + return result; +} + +#endif // MPT_OS_DJGPP + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + +// Note: +// +// std::codecvt::out in LLVM libc++ does not advance in and out pointers when +// running into a non-convertible character. This can happen when no locale is +// set on FreeBSD or MacOSX. This behaviour violates the C++ standard. +// +// We apply the following (albeit costly, even on other platforms) work-around: +// If the conversion errors out and does not advance the pointers at all, we +// retry the conversion with a space character prepended to the string. If it +// still does error out, we retry the whole conversion character by character. +// This is costly even on other platforms in one single case: The first +// character is an invalid Unicode code point or otherwise not convertible. Any +// following non-convertible characters are not a problem. + +inline std::wstring decode_locale_impl(const std::string & str, const std::locale & locale, wchar_t replacement = L'\uFFFD', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::wstring(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const char * in_begin = str.data(); + const char * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + wchar_t * out_begin = out.data(); + wchar_t * out_end = out.data() + out.size(); + const char * in_next = nullptr; + wchar_t * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + decode_locale_impl(std::string(" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return decode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::wstring(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::wstring(out.data(), out_next); +} + +template +inline mpt::widestring decode_locale(const std::locale & locale, const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return decode_locale_impl(src, locale); + } else { + return decode_locale_impl(std::string(src.begin(), src.end()), locale); + } +} + +inline std::string encode_locale_impl(const std::wstring & str, const std::locale & locale, char replacement = '?', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::string(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const wchar_t * in_begin = str.data(); + const wchar_t * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + char * out_begin = out.data(); + char * out_end = out.data() + out.size(); + const wchar_t * in_next = nullptr; + char * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + encode_locale_impl(std::wstring(L" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return encode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::string(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::string(out.data(), out_next); +} + +template +inline Tdststring encode_locale(const std::locale & locale, const mpt::widestring & src) { + if constexpr (std::is_same::value) { + return encode_locale_impl(src, locale); + } else { + const std::string tmp = encode_locale_impl(src, locale); + return Tdststring(tmp.begin(), tmp.end()); + } +} + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +#if MPT_OS_WINDOWS +template +inline Tdststring encode(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline Tdststring encode(const std::locale & locale, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline Tdststring encode(const char32_t (&table)[256], const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_8bit(src, table); +} + +template +inline Tdststring encode(common_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return encode_utf8(src); + break; + case common_encoding::ascii: + return encode_ascii(src); + break; + case common_encoding::iso8859_1: + return encode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return encode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return encode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return encode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return encode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline Tdststring encode(logical_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return encode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return encode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return encode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return encode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + +#if MPT_OS_WINDOWS +template +inline mpt::widestring decode(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline mpt::widestring decode(const std::locale & locale, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline mpt::widestring decode(const char32_t (&table)[256], const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_8bit(src, table); +} + +template +inline mpt::widestring decode(common_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return decode_utf8(src); + break; + case common_encoding::ascii: + return decode_ascii(src); + break; + case common_encoding::iso8859_1: + return decode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return decode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return decode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return decode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return decode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline mpt::widestring decode(logical_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return decode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return decode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return decode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return decode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + + + +inline bool is_utf8(const std::string & str) { + return (str == encode(common_encoding::utf8, decode(common_encoding::utf8, str))); +} + + + +template +struct string_converter { +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::wstring; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct string_converter { + using string_type = std::u8string; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(common_encoding::utf8, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(common_encoding::utf8, src); + } +}; +#endif // C++10 + +template <> +struct string_converter { + using string_type = std::u16string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } +}; + +#if defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#else // !MPT_COMPILER_QUIRK_NO_WCHAR +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } +}; +#endif // MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_DETECTED_MFC + +template <> +struct string_converter { + using string_type = CStringW; + static inline mpt::widestring decode(const string_type & src) { + return mpt::widestring(src.GetString()); + } + static inline string_type encode(const mpt::widestring & src) { + return src.c_str(); + } +}; + +template <> +struct string_converter { + using string_type = CStringA; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(mpt::logical_encoding::locale, std::string(src.GetString())); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(mpt::logical_encoding::locale, src).c_str(); + } +}; + +#endif // MPT_DETECTED_MFC + +template ::type>::value, bool> = true> +inline Tdststring convert(const Tsrcstring & src) { + if constexpr (std::is_same::type>::value) { + return mpt::as_string(src); + } else { + return string_converter::encode(string_converter::decode(mpt::as_string(src))); + } +} + +template ::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding to, const Tsrcstring & src) { + return mpt::encode(to, string_converter::decode(mpt::as_string(src))); +} + +template ::type, std::string>::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding from, const Tsrcstring & src) { + return string_converter::encode(mpt::decode(from, mpt::as_string(src))); +} + +template ::type>::value, bool> = true> +inline Tdststring convert(Tto to, Tfrom from, const Tsrcstring & src) { + return mpt::encode(to, mpt::decode(from, mpt::as_string(src))); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_CONVERT_HPP Property changes on: src/mpt/string_convert/convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/macros.hpp =================================================================== --- src/mpt/string_convert/macros.hpp (nonexistent) +++ src/mpt/string_convert/macros.hpp (working copy) @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_MACROS_HPP +#define MPT_STRING_CONVERT_MACROS_HPP + + + +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + + + +// The MPT_UTF8_STRING allows specifying UTF8 char arrays. +// The resulting type is mpt::ustring and the construction might require runtime translation, +// i.e. it is NOT generally available at compile time. +// Use explicit UTF8 encoding, +// i.e. U+00FC (LATIN SMALL LETTER U WITH DIAERESIS) would be written as "\xC3\xBC". +#define MPT_UTF8_STRING(x) mpt::convert(mpt::common_encoding::utf8, std::string{x}) + + + +#endif // MPT_STRING_CONVERT_MACROS_HPP Property changes on: src/mpt/string_convert/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/tests/tests_string_convert.hpp =================================================================== --- src/mpt/string_convert/tests/tests_string_convert.hpp (nonexistent) +++ src/mpt/string_convert/tests/tests_string_convert.hpp (working copy) @@ -0,0 +1,227 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP +#define MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/string_convert/macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string_convert{ + +MPT_TEST_GROUP_INLINE("mpt/string_convert") +{ + // MPT_UTF8_STRING version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_UTF8_STRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_UTF8_STRING("a")); + +#if MPT_OS_EMSCRIPTEN + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("\xe2\x8c\x82")), "\xe2\x8c\x82"); +#endif // MPT_OS_EMSCRIPTEN + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) (\xC3\xA4) and CJK U+5BB6 (\xE5\xAE\xB6) + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + + // wide L"" version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), L"a"); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), L"a"); + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4428) // universal-character-name encountered in source +#endif + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"abc")); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u5BB6xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace string_convert +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP Property changes on: src/mpt/string_convert/tests/tests_string_convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/convert.hpp =================================================================== --- src/mpt/string_convert/convert.hpp (nonexistent) +++ src/mpt/string_convert/convert.hpp (working copy) @@ -0,0 +1,1131 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_CONVERT_HPP +#define MPT_STRING_CONVERT_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/saturate_cast.hpp" +#include "mpt/detect/mfc.hpp" +#include "mpt/string/types.hpp" + +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include +#include +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +#include +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +#include + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + +#if MPT_OS_DJGPP +#include +#endif // MPT_OS_DJGPP + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +/* +default 1:1 mapping +inline constexpr char32_t CharsetTableISO8859_1[256] = { + 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000a,0x000b,0x000c,0x000d,0x000e,0x000f, + 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f, + 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, + 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, + 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, + 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, + 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, + 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, + 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008a,0x008b,0x008c,0x008d,0x008e,0x008f, + 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009a,0x009b,0x009c,0x009d,0x009e,0x009f, + 0x00a0,0x00a1,0x00a2,0x00a3,0x00a4,0x00a5,0x00a6,0x00a7,0x00a8,0x00a9,0x00aa,0x00ab,0x00ac,0x00ad,0x00ae,0x00af, + 0x00b0,0x00b1,0x00b2,0x00b3,0x00b4,0x00b5,0x00b6,0x00b7,0x00b8,0x00b9,0x00ba,0x00bb,0x00bc,0x00bd,0x00be,0x00bf, + 0x00c0,0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce,0x00cf, + 0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,0x00d7,0x00d8,0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00de,0x00df, + 0x00e0,0x00e1,0x00e2,0x00e3,0x00e4,0x00e5,0x00e6,0x00e7,0x00e8,0x00e9,0x00ea,0x00eb,0x00ec,0x00ed,0x00ee,0x00ef, + 0x00f0,0x00f1,0x00f2,0x00f3,0x00f4,0x00f5,0x00f6,0x00f7,0x00f8,0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff +}; +*/ + +inline constexpr char32_t CharsetTableISO8859_15[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableWindows1252[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f, + 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +inline constexpr char32_t CharsetTableCP850[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00F8, 0x00a3, 0x00D8, 0x00D7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00AE, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00E3, 0x00C3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250c, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00df, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00b5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00b1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00f7, 0x00B8, 0x00b0, 0x00A8, 0x00b7, 0x00B9, 0x00B3, 0x00b2, 0x25a0, 0x00a0}; + +inline constexpr char32_t CharsetTableCP437[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0}; + +template +inline mpt::widestring decode_8bit(const Tsrcstring & str, const char32_t (&table)[256], mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + std::size_t c = static_cast(mpt::char_value(str[i])); + if (c < std::size(table)) { + res.push_back(static_cast(table[c])); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_8bit(const mpt::widestring & str, const char32_t (&table)[256], char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + bool found = false; + // Try non-control characters first. + // In cases where there are actual characters mirrored in this range (like in AMS/AMS2 character sets), + // characters in the common range are preferred this way. + for (std::size_t x = 0x20; x < std::size(table); ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + if (!found) { + // try control characters + for (std::size_t x = 0x00; x < std::size(table) && x < 0x20; ++x) { + if (c == table[x]) { + res.push_back(static_cast(static_cast(x))); + found = true; + break; + } + } + } + if (!found) { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_ascii(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline Tdststring encode_ascii(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0x7f) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + +template +inline mpt::widestring decode_iso8859_1(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + MPT_UNUSED(replacement); + mpt::widestring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + uint8 c = str[i]; + res.push_back(static_cast(static_cast(c))); + } + return res; +} + +template +inline Tdststring encode_iso8859_1(const mpt::widestring & str, char replacement = '?') { + Tdststring res; + res.reserve(str.length()); + for (std::size_t i = 0; i < str.length(); ++i) { + char32_t c = static_cast(str[i]); + if (c <= 0xff) { + res.push_back(static_cast(static_cast(c))); + } else { + res.push_back(replacement); + } + } + return res; +} + + + +template +inline mpt::widestring decode_utf8(const Tsrcstring & str, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + const Tsrcstring & in = str; + mpt::widestring out; + // state: + std::size_t charsleft = 0; + char32_t ucs4 = 0; + for (uint8 c : in) { + if (charsleft == 0) { + if ((c & 0x80) == 0x00) { + out.push_back(static_cast(c)); + } else if ((c & 0xE0) == 0xC0) { + ucs4 = c & 0x1F; + charsleft = 1; + } else if ((c & 0xF0) == 0xE0) { + ucs4 = c & 0x0F; + charsleft = 2; + } else if ((c & 0xF8) == 0xF0) { + ucs4 = c & 0x07; + charsleft = 3; + } else { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + } else { + if ((c & 0xC0) != 0x80) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + ucs4 <<= 6; + ucs4 |= c & 0x3F; + charsleft--; + if (charsleft == 0) { + if constexpr (sizeof(mpt::widechar) == 2) { + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(ucs4)); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(hi_sur); + out.push_back(lo_sur); + } + } else { + out.push_back(static_cast(ucs4)); + } + ucs4 = 0; + } + } + } + if (charsleft != 0) { + out.push_back(replacement); + ucs4 = 0; + charsleft = 0; + } + return out; +} + +template +inline Tdststring encode_utf8(const mpt::widestring & str, char replacement = '?') { + const mpt::widestring & in = str; + Tdststring out; + for (std::size_t i = 0; i < in.length(); i++) { + mpt::widechar wc = in[i]; + char32_t ucs4 = 0; + if constexpr (sizeof(mpt::widechar) == 2) { + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + } else { + ucs4 = static_cast(wc); + } + if (ucs4 > 0x1fffff) { + out.push_back(replacement); + continue; + } + uint8 utf8[6]; + std::size_t numchars = 0; + for (numchars = 0; numchars < 6; numchars++) { + utf8[numchars] = ucs4 & 0x3F; + ucs4 >>= 6; + if (ucs4 == 0) { + break; + } + } + numchars++; + if (numchars == 1) { + out.push_back(utf8[0]); + continue; + } + if (numchars == 2 && utf8[numchars - 1] == 0x01) { + // generate shortest form + out.push_back(utf8[0] | 0x40); + continue; + } + std::size_t charsleft = numchars; + while (charsleft > 0) { + if (charsleft == numchars) { + out.push_back(utf8[charsleft - 1] | (((1 << numchars) - 1) << (8 - numchars))); + } else { + // cppcheck false-positive + // cppcheck-suppress arrayIndexOutOfBounds + out.push_back(utf8[charsleft - 1] | 0x80); + } + charsleft--; + } + } + return out; +} + + + +template +inline Tdststring utf32_from_utf16(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 2); + static_assert(sizeof(typename Tdststring::value_type) == 4); + MPT_UNUSED(replacement); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char16_t wc = static_cast(static_cast(in[i])); + char32_t ucs4 = 0; + uint16 c = static_cast(wc); + if (i + 1 < in.length()) { + // check for surrogate pair + uint16 hi_sur = in[i + 0]; + uint16 lo_sur = in[i + 1]; + if (hi_sur >> 10 == 0x36 && lo_sur >> 10 == 0x37) { + // surrogate pair + ++i; + hi_sur &= (1 << 10) - 1; + lo_sur &= (1 << 10) - 1; + ucs4 = (static_cast(hi_sur) << 10) | (static_cast(lo_sur) << 0); + } else { + // no surrogate pair + ucs4 = static_cast(c); + } + } else { + // no surrogate possible + ucs4 = static_cast(c); + } + out.push_back(static_cast(static_cast(ucs4))); + } + return out; +} + +template +inline Tdststring utf16_from_utf32(const Tsrcstring & in, mpt::widechar replacement = MPT_WIDECHAR('\uFFFD')) { + static_assert(sizeof(typename Tsrcstring::value_type) == 4); + static_assert(sizeof(typename Tdststring::value_type) == 2); + Tdststring out; + out.reserve(in.length()); + for (std::size_t i = 0; i < in.length(); i++) { + char32_t ucs4 = static_cast(static_cast(in[i])); + if (ucs4 > 0x1fffff) { + out.push_back(static_cast(static_cast(replacement))); + ucs4 = 0; + } + if (ucs4 <= 0xffff) { + out.push_back(static_cast(static_cast(ucs4))); + } else { + uint32 surrogate = static_cast(ucs4) - 0x10000; + uint16 hi_sur = static_cast((0x36 << 10) | ((surrogate >> 10) & ((1 << 10) - 1))); + uint16 lo_sur = static_cast((0x37 << 10) | ((surrogate >> 0) & ((1 << 10) - 1))); + out.push_back(static_cast(hi_sur)); + out.push_back(static_cast(lo_sur)); + } + } + return out; +} + + + +#if MPT_OS_WINDOWS + +inline bool has_codepage(UINT cp) { + return IsValidCodePage(cp) ? true : false; +} + +inline bool windows_has_encoding(common_encoding encoding) { + bool result = false; + switch (encoding) { + case common_encoding::utf8: + result = has_codepage(CP_UTF8); + break; + case common_encoding::ascii: + result = has_codepage(20127); + break; + case common_encoding::iso8859_1: + result = has_codepage(28591); + break; + case common_encoding::iso8859_15: + result = has_codepage(28605); + break; + case common_encoding::cp850: + result = has_codepage(850); + break; + case common_encoding::cp437: + result = has_codepage(437); + break; + case common_encoding::windows1252: + result = has_codepage(1252); + break; + } + return result; +} + +inline bool windows_has_encoding(logical_encoding encoding) { + bool result = false; + switch (encoding) { + case logical_encoding::locale: + result = true; + break; + case logical_encoding::active_locale: + result = false; + break; + } + return result; +} + +inline UINT codepage_from_encoding(logical_encoding encoding) { + UINT result = 0; + switch (encoding) { + case logical_encoding::locale: + result = CP_ACP; + break; + case logical_encoding::active_locale: + result = 0; + break; + } + return result; +} + +inline UINT codepage_from_encoding(common_encoding encoding) { + UINT result = 0; + switch (encoding) { + case common_encoding::utf8: + result = CP_UTF8; + break; + case common_encoding::ascii: + result = 20127; + break; + case common_encoding::iso8859_1: + result = 28591; + break; + case common_encoding::iso8859_15: + result = 28605; + break; + case common_encoding::cp850: + result = 850; + break; + case common_encoding::cp437: + result = 437; + break; + case common_encoding::windows1252: + result = 1252; + break; + } + return result; +} + +template +inline Tdststring encode_codepage(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + Tdststring encoded_string; + int required_size = WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), nullptr, 0, nullptr, nullptr); + if (required_size > 0) { + encoded_string.resize(required_size); + WideCharToMultiByte(codepage, 0, src.data(), mpt::saturate_cast(src.size()), reinterpret_cast(encoded_string.data()), required_size, nullptr, nullptr); + } + return encoded_string; +} + +template +inline mpt::widestring decode_codepage(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + mpt::widestring decoded_string; + int required_size = MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), nullptr, 0); + if (required_size > 0) { + decoded_string.resize(required_size); + MultiByteToWideChar(codepage, 0, reinterpret_cast(src.data()), mpt::saturate_cast(src.size()), decoded_string.data(), required_size); + } + return decoded_string; +} + +#endif // MPT_OS_WINDOWS + + + +#if MPT_OS_DJGPP + +inline common_encoding djgpp_get_locale_encoding() { + uint16 active_codepage = 437; + uint16 system_codepage = 437; + __dpmi_regs regs; + std::memset(®s, 0, sizeof(__dpmi_regs)); + regs.x.ax = 0x6601; + if (__dpmi_int(0x21, ®s) == 0) { + int cf = (regs.x.flags >> 0) & 1; + if (cf == 0) { + active_codepage = regs.x.bx; + system_codepage = regs.x.dx; + } + } + common_encoding result = common_encoding::cp437; + if (active_codepage == 0) { + result = common_encoding::cp437; + } else if (active_codepage == 437) { + result = common_encoding::cp437; + } else if (active_codepage == 850) { + result = common_encoding::cp850; + } else if (system_codepage == 437) { + result = common_encoding::cp437; + } else if (system_codepage == 850) { + result = common_encoding::cp850; + } else { + result = common_encoding::cp437; + } + return result; +} + +#endif // MPT_OS_DJGPP + + + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + +// Note: +// +// std::codecvt::out in LLVM libc++ does not advance in and out pointers when +// running into a non-convertible character. This can happen when no locale is +// set on FreeBSD or MacOSX. This behaviour violates the C++ standard. +// +// We apply the following (albeit costly, even on other platforms) work-around: +// If the conversion errors out and does not advance the pointers at all, we +// retry the conversion with a space character prepended to the string. If it +// still does error out, we retry the whole conversion character by character. +// This is costly even on other platforms in one single case: The first +// character is an invalid Unicode code point or otherwise not convertible. Any +// following non-convertible characters are not a problem. + +inline std::wstring decode_locale_impl(const std::string & str, const std::locale & locale, wchar_t replacement = L'\uFFFD', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::wstring(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const char * in_begin = str.data(); + const char * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + wchar_t * out_begin = out.data(); + wchar_t * out_end = out.data() + out.size(); + const char * in_next = nullptr; + wchar_t * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.in(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + decode_locale_impl(std::string(" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return decode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::wstring(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::wstring(out.data(), out_next); +} + +template +inline mpt::widestring decode_locale(const std::locale & locale, const Tsrcstring & src) { + if constexpr (std::is_same::value) { + return decode_locale_impl(src, locale); + } else { + return decode_locale_impl(std::string(src.begin(), src.end()), locale); + } +} + +inline std::string encode_locale_impl(const std::wstring & str, const std::locale & locale, char replacement = '?', int retry = 0, bool * progress = nullptr) { + if (str.empty()) { + return std::string(); + } + std::vector out; + using codecvt_type = std::codecvt; + std::mbstate_t state = std::mbstate_t(); + const codecvt_type & facet = std::use_facet(locale); + codecvt_type::result result = codecvt_type::partial; + const wchar_t * in_begin = str.data(); + const wchar_t * in_end = in_begin + str.size(); + out.resize((in_end - in_begin) * (mpt::saturate_cast(facet.max_length()) + 1)); + char * out_begin = out.data(); + char * out_end = out.data() + out.size(); + const wchar_t * in_next = nullptr; + char * out_next = nullptr; + do { + if (retry == 2) { + for (;;) { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_begin + 1, in_next, out_begin, out_end, out_next); + if (result == codecvt_type::partial && in_next == in_begin + 1) { + in_begin = in_next; + out_begin = out_next; + continue; + } else { + break; + } + } + } else { + in_next = nullptr; + out_next = nullptr; + result = facet.out(state, in_begin, in_end, in_next, out_begin, out_end, out_next); + } + if (result == codecvt_type::partial || (result == codecvt_type::error && out_next == out_end)) { + out.resize(out.size() * 2); + in_begin = in_next; + out_begin = out.data() + (out_next - out_begin); + out_end = out.data() + out.size(); + continue; + } + if (retry == 0) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + bool made_progress = true; + encode_locale_impl(std::wstring(L" ") + str, locale, replacement, 1, &made_progress); + if (!made_progress) { + return encode_locale_impl(str, locale, replacement, 2); + } + } + } else if (retry == 1) { + if (result == codecvt_type::error && in_next == in_begin && out_next == out_begin) { + *progress = false; + } else { + *progress = true; + } + return std::string(); + } + if (result == codecvt_type::error) { + ++in_next; + *out_next = replacement; + ++out_next; + } + in_begin = in_next; + out_begin = out_next; + } while ((result == codecvt_type::error && in_next < in_end && out_next < out_end) || (retry == 2 && in_next < in_end)); + return std::string(out.data(), out_next); +} + +template +inline Tdststring encode_locale(const std::locale & locale, const mpt::widestring & src) { + if constexpr (std::is_same::value) { + return encode_locale_impl(src, locale); + } else { + const std::string tmp = encode_locale_impl(src, locale); + return Tdststring(tmp.begin(), tmp.end()); + } +} + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + + + +#if MPT_OS_WINDOWS +template +inline Tdststring encode(UINT codepage, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline Tdststring encode(const std::locale & locale, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline Tdststring encode(const char32_t (&table)[256], const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return encode_8bit(src, table); +} + +template +inline Tdststring encode(common_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return encode_utf8(src); + break; + case common_encoding::ascii: + return encode_ascii(src); + break; + case common_encoding::iso8859_1: + return encode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return encode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return encode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return encode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return encode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline Tdststring encode(logical_encoding encoding, const mpt::widestring & src) { + static_assert(sizeof(typename Tdststring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return encode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return encode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return encode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return encode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return encode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + +#if MPT_OS_WINDOWS +template +inline mpt::widestring decode(UINT codepage, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_codepage(codepage, src); +} +#endif // MPT_OS_WINDOWS + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template +inline mpt::widestring decode(const std::locale & locale, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_locale(src, locale); +} +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +template +inline mpt::widestring decode(const char32_t (&table)[256], const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); + return decode_8bit(src, table); +} + +template +inline mpt::widestring decode(common_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif + switch (encoding) { + case common_encoding::utf8: + return decode_utf8(src); + break; + case common_encoding::ascii: + return decode_ascii(src); + break; + case common_encoding::iso8859_1: + return decode_iso8859_1(src); + break; + case common_encoding::iso8859_15: + return decode_8bit(src, CharsetTableISO8859_15); + break; + case common_encoding::cp437: + return decode_8bit(src, CharsetTableCP437); + break; + case common_encoding::cp850: + return decode_8bit(src, CharsetTableCP850); + break; + case common_encoding::windows1252: + return decode_8bit(src, CharsetTableWindows1252); + break; + } + throw std::domain_error("unsupported encoding"); +} + +template +inline mpt::widestring decode(logical_encoding encoding, const Tsrcstring & src) { + static_assert(sizeof(typename Tsrcstring::value_type) == sizeof(char)); + static_assert((std::is_same::value)); +#if MPT_OS_WINDOWS + if (windows_has_encoding(encoding)) { + return decode_codepage(codepage_from_encoding(encoding), src); + } +#endif +#if MPT_OS_DJGPP + switch (encoding) { + case logical_encoding::locale: + return decode(djgpp_get_locale_encoding(), src); + break; + case logical_encoding::active_locale: + return decode(djgpp_get_locale_encoding(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#elif !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + switch (encoding) { + case logical_encoding::locale: + return decode_locale(std::locale(""), src); + break; + case logical_encoding::active_locale: + return decode_locale(std::locale(), src); + break; + } + throw std::domain_error("unsupported encoding"); +#else + throw std::domain_error("unsupported encoding"); +#endif +} + + + +inline bool is_utf8(const std::string & str) { + return (str == encode(common_encoding::utf8, decode(common_encoding::utf8, str))); +} + + + +template +struct string_converter { +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +template +struct string_converter>> { + using string_type = std::basic_string>; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(encoding, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(encoding, src); + } +}; + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::wstring; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_CXX_AT_LEAST(20) +template <> +struct string_converter { + using string_type = std::u8string; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(common_encoding::utf8, src); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(common_encoding::utf8, src); + } +}; +#endif // C++10 + +template <> +struct string_converter { + using string_type = std::u16string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char16_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } +}; + +#if defined(MPT_COMPILER_QUIRK_NO_WCHAR) +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + return src; + } + static inline string_type encode(const mpt::widestring & src) { + return src; + } +}; +#else // !MPT_COMPILER_QUIRK_NO_WCHAR +template <> +struct string_converter { + using string_type = std::u32string; + static inline mpt::widestring decode(const string_type & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return mpt::widestring(src.begin(), src.end()); + } else { + return utf16_from_utf32(src); + } + } + static inline string_type encode(const mpt::widestring & src) { + if constexpr (sizeof(mpt::widechar) == sizeof(char32_t)) { + return string_type(src.begin(), src.end()); + } else { + return utf32_from_utf16(src); + } + } +}; +#endif // MPT_COMPILER_QUIRK_NO_WCHAR + +#if MPT_DETECTED_MFC + +template <> +struct string_converter { + using string_type = CStringW; + static inline mpt::widestring decode(const string_type & src) { + return mpt::widestring(src.GetString()); + } + static inline string_type encode(const mpt::widestring & src) { + return src.c_str(); + } +}; + +template <> +struct string_converter { + using string_type = CStringA; + static inline mpt::widestring decode(const string_type & src) { + return mpt::decode(mpt::logical_encoding::locale, std::string(src.GetString())); + } + static inline string_type encode(const mpt::widestring & src) { + return mpt::encode(mpt::logical_encoding::locale, src).c_str(); + } +}; + +#endif // MPT_DETECTED_MFC + +template ::type>::value, bool> = true> +inline Tdststring convert(const Tsrcstring & src) { + if constexpr (std::is_same::type>::value) { + return mpt::as_string(src); + } else { + return string_converter::encode(string_converter::decode(mpt::as_string(src))); + } +} + +template ::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding to, const Tsrcstring & src) { + return mpt::encode(to, string_converter::decode(mpt::as_string(src))); +} + +template ::type, std::string>::value, bool> = true, std::enable_if_t::type>::value, bool> = true> +inline Tdststring convert(Tencoding from, const Tsrcstring & src) { + return string_converter::encode(mpt::decode(from, mpt::as_string(src))); +} + +template ::type>::value, bool> = true> +inline Tdststring convert(Tto to, Tfrom from, const Tsrcstring & src) { + return mpt::encode(to, mpt::decode(from, mpt::as_string(src))); +} + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_CONVERT_HPP Property changes on: src/mpt/string_convert/convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/macros.hpp =================================================================== --- src/mpt/string_convert/macros.hpp (nonexistent) +++ src/mpt/string_convert/macros.hpp (working copy) @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_MACROS_HPP +#define MPT_STRING_CONVERT_MACROS_HPP + + + +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" + +#include + + + +// The MPT_UTF8_STRING allows specifying UTF8 char arrays. +// The resulting type is mpt::ustring and the construction might require runtime translation, +// i.e. it is NOT generally available at compile time. +// Use explicit UTF8 encoding, +// i.e. U+00FC (LATIN SMALL LETTER U WITH DIAERESIS) would be written as "\xC3\xBC". +#define MPT_UTF8_STRING(x) mpt::convert(mpt::common_encoding::utf8, std::string{x}) + + + +#endif // MPT_STRING_CONVERT_MACROS_HPP Property changes on: src/mpt/string_convert/macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/tests/tests_string_convert.hpp =================================================================== --- src/mpt/string_convert/tests/tests_string_convert.hpp (nonexistent) +++ src/mpt/string_convert/tests/tests_string_convert.hpp (working copy) @@ -0,0 +1,227 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP +#define MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/string_convert/macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string_convert{ + +MPT_TEST_GROUP_INLINE("mpt/string_convert") +{ + // MPT_UTF8_STRING version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_UTF8_STRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_UTF8_STRING("a")); + +#if MPT_OS_EMSCRIPTEN + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("\xe2\x8c\x82")), "\xe2\x8c\x82"); +#endif // MPT_OS_EMSCRIPTEN + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) (\xC3\xA4) and CJK U+5BB6 (\xE5\xAE\xB6) + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + + // wide L"" version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), L"a"); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), L"a"); + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4428) // universal-character-name encountered in source +#endif + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"abc")); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u5BB6xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace string_convert +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP Property changes on: src/mpt/string_convert/tests/tests_string_convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/string_convert/tests/tests_string_convert.hpp =================================================================== --- src/mpt/string_convert/tests/tests_string_convert.hpp (nonexistent) +++ src/mpt/string_convert/tests/tests_string_convert.hpp (working copy) @@ -0,0 +1,227 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP +#define MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/string_convert/macros.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace string_convert{ + +MPT_TEST_GROUP_INLINE("mpt/string_convert") +{ + // MPT_UTF8_STRING version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_USTRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_USTRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_USTRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), MPT_UTF8_STRING("a")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), MPT_UTF8_STRING("a")); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("a")), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), MPT_UTF8_STRING("a")); + +#if MPT_OS_EMSCRIPTEN + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("\xe2\x8c\x82")), "\xe2\x8c\x82"); +#endif // MPT_OS_EMSCRIPTEN + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) (\xC3\xA4) and CJK U+5BB6 (\xE5\xAE\xB6) + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("xyz"))); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), MPT_USTRING("abc"))); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xC3\xA4xyz")), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xC3\xA4xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz")), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(MPT_UTF8_STRING("abc\xE5\xAE\xB6xyz"), mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if !defined(MPT_COMPILER_QUIRK_NO_WCHAR) + + // wide L"" version + + // Charset conversions (basic sanity checks) + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, "a"), L"a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::ascii, "a"), L"a"); + + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, L"a"), "a"); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::logical_encoding::locale, "a"), L"a"); + + // Check that some character replacement is done (and not just empty strings or truncated strings are returned) + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + +#if MPT_COMPILER_MSVC +#pragma warning(push) +#pragma warning(disable : 4428) // universal-character-name encountered in source +#endif + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u00E4xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, L"abc\u5BB6xyz"), "abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, L"abc\u5BB6xyz"), "abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xC3\xA4xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xC3\xA4xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::ascii, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::cp437, "abc\xE5\xAE\xB6xyz"), L"abc")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz"), L"abc")); + + MPT_TEST_EXPECT_EXPR(mpt::ends_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"xyz")); + MPT_TEST_EXPECT_EXPR(mpt::starts_with(mpt::convert(mpt::logical_encoding::locale, "abc\xE5\xAE\xB6xyz"), L"abc")); + + // Check that characters are correctly converted + // We test german umlaut-a (U+00E4) and CJK U+5BB6 + + // cp437 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::cp437, L"abc\u00E4xyz"), "abc\x84xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::cp437, "abc\x84xyz")); + + // iso8859 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::iso8859_1, L"abc\u00E4xyz"), "abc\xE4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::iso8859_1, "abc\xE4xyz")); + + // utf8 + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u00E4xyz"), "abc\xC3\xA4xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u00E4xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xC3\xA4xyz")); + MPT_TEST_EXPECT_EQUAL(mpt::convert(mpt::common_encoding::utf8, L"abc\u5BB6xyz"), "abc\xE5\xAE\xB6xyz"); + MPT_TEST_EXPECT_EQUAL(L"abc\u5BB6xyz", mpt::convert(mpt::common_encoding::utf8, "abc\xE5\xAE\xB6xyz")); + +#if MPT_COMPILER_MSVC +#pragma warning(pop) +#endif + +#endif // !MPT_COMPILER_QUIRK_NO_WCHAR +} + +} // namespace string_convert +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_STRING_CONVERT_TESTS_STRING_CONVERT_HPP Property changes on: src/mpt/string_convert/tests/tests_string_convert.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/system_error/system_error.hpp =================================================================== --- src/mpt/system_error/system_error.hpp (nonexistent) +++ src/mpt/system_error/system_error.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP +#define MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#if MPT_OS_WINDOWS +#include +#if MPT_OS_WINDOWS_WINRT +#include +#endif // MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +namespace windows { + + + +inline mpt::ustring GetErrorMessage(DWORD errorCode, HANDLE hModule = NULL) { +#if MPT_OS_WINDOWS_WINRT + std::vector msgbuf(65536); + if (FormatMessage( + (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + msgbuf.data(), + mpt::saturate_cast(msgbuf.size()), + NULL) + == 0) + { + DWORD e = GetLastError(); + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + return mpt::convert(mpt::winstring{msgbuf.data()}); +#else + mpt::ustring message; + void * lpMsgBuf = nullptr; + if (FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&lpMsgBuf, + 0, + NULL) + == 0) + { + DWORD e = GetLastError(); + if (lpMsgBuf) { + LocalFree(lpMsgBuf); + } + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + if (!lpMsgBuf) { + return {}; + } + try { + message = mpt::convert(mpt::winstring{static_cast(lpMsgBuf)}); + } catch (mpt::out_of_memory e) { + LocalFree(lpMsgBuf); + mpt::rethrow_out_of_memory(e); + } + LocalFree(lpMsgBuf); + return message; +#endif +} + + +class error + : public std::runtime_error { +public: + error(DWORD errorCode, HANDLE hModule = NULL) + : std::runtime_error(mpt::convert(mpt::exception_encoding, MPT_UFORMAT_MESSAGE("Windows Error: 0x{}: {}")(mpt::format::hex0<8>(errorCode), GetErrorMessage(errorCode, hModule)))) { + return; + } +}; + + +inline HANDLE CheckFileHANDLE(HANDLE handle) { + if (handle == INVALID_HANDLE_VALUE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline HANDLE CheckHANDLE(HANDLE handle) { + if (handle == NULL) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline void CheckBOOL(BOOL result) { + if (result == FALSE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + +inline void ExpectError(DWORD expected) { + DWORD err = ::GetLastError(); + if (err != expected) { + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + + +} // namespace windows + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP Property changes on: src/mpt/system_error/system_error.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/system_error/system_error.hpp =================================================================== --- src/mpt/system_error/system_error.hpp (nonexistent) +++ src/mpt/system_error/system_error.hpp (working copy) @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP +#define MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/format/message.hpp" +#include "mpt/format/message_macros.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" + +#if MPT_OS_WINDOWS +#include +#if MPT_OS_WINDOWS_WINRT +#include +#endif // MPT_OS_WINDOWS_WINRT +#endif // MPT_OS_WINDOWS + +#if MPT_OS_WINDOWS +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +namespace windows { + + + +inline mpt::ustring GetErrorMessage(DWORD errorCode, HANDLE hModule = NULL) { +#if MPT_OS_WINDOWS_WINRT + std::vector msgbuf(65536); + if (FormatMessage( + (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + msgbuf.data(), + mpt::saturate_cast(msgbuf.size()), + NULL) + == 0) + { + DWORD e = GetLastError(); + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + return mpt::convert(mpt::winstring{msgbuf.data()}); +#else + mpt::ustring message; + void * lpMsgBuf = nullptr; + if (FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | (hModule ? FORMAT_MESSAGE_FROM_HMODULE : 0) | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + hModule, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&lpMsgBuf, + 0, + NULL) + == 0) + { + DWORD e = GetLastError(); + if (lpMsgBuf) { + LocalFree(lpMsgBuf); + } + if ((e == ERROR_NOT_ENOUGH_MEMORY) || (e == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + return {}; + } + if (!lpMsgBuf) { + return {}; + } + try { + message = mpt::convert(mpt::winstring{static_cast(lpMsgBuf)}); + } catch (mpt::out_of_memory e) { + LocalFree(lpMsgBuf); + mpt::rethrow_out_of_memory(e); + } + LocalFree(lpMsgBuf); + return message; +#endif +} + + +class error + : public std::runtime_error { +public: + error(DWORD errorCode, HANDLE hModule = NULL) + : std::runtime_error(mpt::convert(mpt::exception_encoding, MPT_UFORMAT_MESSAGE("Windows Error: 0x{}: {}")(mpt::format::hex0<8>(errorCode), GetErrorMessage(errorCode, hModule)))) { + return; + } +}; + + +inline HANDLE CheckFileHANDLE(HANDLE handle) { + if (handle == INVALID_HANDLE_VALUE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline HANDLE CheckHANDLE(HANDLE handle) { + if (handle == NULL) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } + return handle; +} + + +inline void CheckBOOL(BOOL result) { + if (result == FALSE) { + DWORD err = ::GetLastError(); + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + +inline void ExpectError(DWORD expected) { + DWORD err = ::GetLastError(); + if (err != expected) { + if ((err == ERROR_NOT_ENOUGH_MEMORY) || (err == ERROR_OUTOFMEMORY)) { + mpt::throw_out_of_memory(); + } + throw windows::error(err); + } +} + + + +} // namespace windows + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_SYSTEM_ERROR_SYSTEM_ERROR_HPP Property changes on: src/mpt/system_error/system_error.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test.hpp =================================================================== --- src/mpt/test/test.hpp (nonexistent) +++ src/mpt/test/test.hpp (working copy) @@ -0,0 +1,551 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_HPP +#define MPT_TEST_TEST_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/source_location.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +template +struct is_to_stream_writable : std::false_type { }; + +template +struct is_to_stream_writable() << std::declval())>> : std::true_type { }; + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + std::ostringstream s; + s << x; + return s.str(); +} + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + return typeid(x).name(); +} + +inline std::string get_exception_text() { + std::string result; + try { + throw; + } catch (const std::exception & e) { + result = e.what(); + } catch (...) { + result = "unknown exception"; + } + return result; +} + +struct result_success { +}; +struct result_failure { + std::string text{}; +}; +struct result_unexpected_exception { + std::string text{}; +}; + +struct result { + std::variant info{std::monostate{}}; +}; + +struct statistics_counters { + std::size_t total{0}; + std::size_t run{0}; + std::size_t successes{0}; + std::size_t failures{0}; + std::size_t unexpected_exceptions{0}; + std::size_t completed{0}; + constexpr statistics_counters & operator+=(const statistics_counters & other) noexcept { + total += other.total; + run += other.run; + successes += other.successes; + failures += other.failures; + unexpected_exceptions += other.unexpected_exceptions; + completed += other.completed; + return *this; + } +}; + +struct group_statistics { + statistics_counters tests{}; + statistics_counters cases{}; + statistics_counters local_cases{}; +}; + +struct global_statistics { + statistics_counters groups{}; + statistics_counters tests{}; + statistics_counters cases{}; + std::map individual_group_statistics{}; + explicit constexpr operator bool() noexcept { + return succeeded(); + } + constexpr bool operator!() noexcept { + return failed(); + } + constexpr bool succeeded() noexcept { + return groups.successes == groups.run; + } + constexpr bool failed() noexcept { + return groups.failures > 0 || groups.unexpected_exceptions > 0; + } +}; + +class reporter_interface { +protected: + virtual ~reporter_interface() = default; + +public: + virtual void run_begin(const mpt::source_location & loc) = 0; + virtual void group_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void test_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void case_run(const mpt::source_location & loc) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) = 0; + virtual void case_result(const mpt::source_location & loc, const mpt::test::result & result) = 0; + virtual void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) = 0; + virtual void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) = 0; + virtual void run_end(const mpt::source_location & loc, const global_statistics & statistics) = 0; + virtual void immediate_breakpoint() = 0; +}; + +class silent_reporter + : public reporter_interface { +public: + silent_reporter() = default; + ~silent_reporter() override = default; + +public: + virtual void run_begin(const mpt::source_location &) override { + } + virtual void group_begin(const mpt::source_location &, const char *) override { + } + virtual void test_begin(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &) override { + } + virtual void case_run(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *, const char *) override { + } + virtual void case_result(const mpt::source_location &, const mpt::test::result &) override { + } + virtual void test_end(const mpt::source_location &, const char *, const statistics_counters &) override { + } + virtual void group_end(const mpt::source_location &, const char *, const group_statistics &) override { + } + virtual void run_end(const mpt::source_location &, const global_statistics &) override { + } + virtual void immediate_breakpoint() override { + } +}; + +class simple_reporter : public reporter_interface { +private: + std::ostream & s; + +public: + simple_reporter(std::ostream & s_) + : s(s_) { + s.flush(); + } + ~simple_reporter() override { + s.flush(); + } + +public: + void run_begin(const mpt::source_location & loc) override { + static_cast(loc); + s << "Running test suite ..." << std::endl; + } + void group_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << "Running group '" << name << "' ..." << std::endl; + } + void test_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << " Running test '" << name << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc) override { + static_cast(loc); + s << " Checking ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_e) override { + static_cast(loc); + s << " Checking '" << text_e << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) override { + static_cast(loc); + if (text_ex) { + s << " Checking '" << text_e << " throws " << text_ex << "' ..." << std::endl; + } else { + s << " Checking '" << text_e << " throws' ..." << std::endl; + } + } + void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) override { + static_cast(loc); + s << " Checking '" << text_a << " " << text_cmp << " " << text_b << "' ..." << std::endl; + } + void case_result(const mpt::source_location & loc, const mpt::test::result & result) override { + static_cast(loc); + s << " Checking done: "; + if (std::holds_alternative(result.info)) { + s << "Success."; + } else if (std::holds_alternative(result.info)) { + s << "FAILURE: " << std::get(result.info).text; + } else if (std::holds_alternative(result.info)) { + s << "UNEXPECTED EXCEPTION: " << std::get(result.info).text; + } + s << std::endl; + } + void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) override { + static_cast(loc); + static_cast(counters); + s << " Running test '" << name << "' done." << std::endl; + } + void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) override { + static_cast(loc); + static_cast(statistics); + s << "Running group '" << name << "' done." << std::endl; + } + void run_end(const mpt::source_location & loc, const global_statistics & statistics) override { + static_cast(loc); + s << "Running test suite done." << std::endl; + s << "groups: " << statistics.groups.total << " | " << statistics.groups.successes << " passed"; + if (statistics.groups.failures || statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.failures << " FAILED"; + if (statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "tests: " << statistics.tests.total << " | " << statistics.tests.successes << " passed"; + if (statistics.tests.failures || statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.failures << " FAILED"; + if (statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "checks: " << statistics.cases.total << " | " << statistics.cases.successes << " passed"; + if (statistics.cases.failures || statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.failures << " FAILED"; + if (statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + } + void immediate_breakpoint() override { + return; + } +}; + +struct group; + +struct context { + mpt::test::group & group; + mpt::test::reporter_interface & reporter; + mpt::test::group_statistics statistics{}; +}; + +using void_context_function = void (*)(mpt::test::context &); + +struct group { + group * next{nullptr}; + const char * name{""}; + void_context_function func{nullptr}; + inline group(const char * name_, void_context_function f) + : name(name_) + , func(f) { + next = group_list(); + group_list() = this; + } + group_statistics run(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + mpt::test::context context{*this, reporter}; + context.reporter.group_begin(loc, name); + if (func) { + func(context); + } + context.reporter.group_end(loc, name, context.statistics); + return context.statistics; + } + +public: + [[nodiscard]] static inline group *& group_list() noexcept { + static group * group_list = nullptr; + return group_list; + } +}; + +inline global_statistics run_all(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + global_statistics statistics{}; + reporter.run_begin(loc); + for (group * g = group::group_list(); g; g = g->next) { + statistics.groups.total++; + statistics.groups.run++; + group_statistics s = g->run(reporter, loc); + if (s.tests.unexpected_exceptions) { + statistics.groups.unexpected_exceptions++; + } else if (s.tests.failures) { + statistics.groups.failures++; + } else { + statistics.groups.successes++; + } + statistics.tests += s.tests; + statistics.cases += s.cases; + statistics.groups.completed++; + statistics.individual_group_statistics[g->name] = s; + } + reporter.run_end(loc, statistics); + return statistics; +} + +struct test { + + mpt::test::context & context; + const char * name{""}; + mpt::source_location source_location{mpt::source_location::current()}; + void (*breakpoint)(void){nullptr}; + + test(const test &) = delete; + test & operator=(const test &) = delete; + + inline test(mpt::test::context & context_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + inline test(mpt::test::context & context_, const char * name_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , name(name_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + + inline ~test() { + report_test_end(); + } + + void immediate_breakpoint() { + if (breakpoint) { + breakpoint(); + } else { + context.reporter.immediate_breakpoint(); + } + } + + void report_test_begin() { + context.statistics.tests.total++; + context.statistics.tests.run++; + context.statistics.local_cases = statistics_counters{}; + context.reporter.test_begin(source_location, name); + } + + void report_run() { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location); + } + void report_run(const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_e); + } + void report_run(const char * text_ex, const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_ex, text_e); + } + void report_run(const char * text_a, const char * text_cmp, const char * text_b) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_a, text_cmp, text_b); + } + + void report_result(mpt::test::result result) { + if (std::holds_alternative(result.info)) { + context.statistics.local_cases.successes++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.failures++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.unexpected_exceptions++; + } + context.statistics.local_cases.completed++; + context.reporter.case_result(source_location, result); + } + + void report_test_end() { + context.statistics.cases += context.statistics.local_cases; + if (context.statistics.local_cases.unexpected_exceptions) { + context.statistics.tests.unexpected_exceptions++; + } else if (context.statistics.local_cases.failures) { + context.statistics.tests.failures++; + } else { + context.statistics.tests.successes++; + } + context.statistics.tests.completed++; + context.reporter.test_end(source_location, name, context.statistics.local_cases); + } + + template ::value, bool>::type = true> + inline test & expect_throws(Tcallable c, const char * text_ex = nullptr, const char * text_e = nullptr) { + report_run(text_ex ? text_ex : typeid(Texception).name(), text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (const Texception &) { + result.info = mpt::test::result_success{}; + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect_throws_any(Tcallable c, const char * text_e = nullptr) { + report_run(nullptr, text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (...) { + result.info = mpt::test::result_success{}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::invoke(e))).name()); + mpt::test::result result; + try { + const auto ve = std::invoke(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::invoke(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::invoke(b))).name()); + mpt::test::result result; + try { + const auto va = std::invoke(a); + const auto vb = std::invoke(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr && e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::forward(e))).name()); + mpt::test::result result; + try { + const auto ve = std::forward(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::forward(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::forward(b))).name()); + mpt::test::result result; + try { + const auto va = std::forward(a); + const auto vb = std::forward(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } +}; + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_HPP Property changes on: src/mpt/test/test.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test_macros.hpp =================================================================== --- src/mpt/test/test_macros.hpp (nonexistent) +++ src/mpt/test/test_macros.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_MACROS_HPP +#define MPT_TEST_TEST_MACROS_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/preprocessor.hpp" +#include "mpt/test/test.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +#define MPT_TEST_GROUP_BEGIN(name) \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { +#define MPT_TEST_GROUP_END() \ + } \ + } \ + ; + +#define MPT_TEST_GROUP_INLINE_IDENTIFIER(identifier, name) \ + inline void MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_JOIN(mpt_test_group_name_, identifier) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_INLINE(name) \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_STATIC(name) \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + static mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_DELAYED(x) [&] { \ + return x; \ +} + +#define MPT_TEST_EXPECT mpt::test::test{context}.expect + +#define MPT_TEST_EXPECT_EXPR(e) mpt::test::test{mpt_test_context}.expect([&] { return e; }, #e) +#define MPT_TEST_EXPECT_CMP(a, cmp, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, [](const auto & a_, const auto & b_) { return a_ cmp b_; }, [&] { return b; }, #a, #cmp, #b) +#define MPT_TEST_EXPECT_THROWS_ANY(expr) mpt::test::test{mpt_test_context}.expect_throws_any([&] { expr; }, #expr) +#define MPT_TEST_EXPECT_THROWS(exception, expr) mpt::test::test{mpt_test_context}.expect_throws([&] { expr; }, #exception, #expr) + +#define MPT_TEST_EXPECT_EQUAL(a, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, std::equal_to<>{}, [&] { return b; }, #a, "==", #b) + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_MACROS_HPP Property changes on: src/mpt/test/test_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test.hpp =================================================================== --- src/mpt/test/test.hpp (nonexistent) +++ src/mpt/test/test.hpp (working copy) @@ -0,0 +1,551 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_HPP +#define MPT_TEST_TEST_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/base/source_location.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +template +struct is_to_stream_writable : std::false_type { }; + +template +struct is_to_stream_writable() << std::declval())>> : std::true_type { }; + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + std::ostringstream s; + s << x; + return s.str(); +} + +template +inline auto format(const T & x) -> typename std::enable_if::value, std::string>::type { + return typeid(x).name(); +} + +inline std::string get_exception_text() { + std::string result; + try { + throw; + } catch (const std::exception & e) { + result = e.what(); + } catch (...) { + result = "unknown exception"; + } + return result; +} + +struct result_success { +}; +struct result_failure { + std::string text{}; +}; +struct result_unexpected_exception { + std::string text{}; +}; + +struct result { + std::variant info{std::monostate{}}; +}; + +struct statistics_counters { + std::size_t total{0}; + std::size_t run{0}; + std::size_t successes{0}; + std::size_t failures{0}; + std::size_t unexpected_exceptions{0}; + std::size_t completed{0}; + constexpr statistics_counters & operator+=(const statistics_counters & other) noexcept { + total += other.total; + run += other.run; + successes += other.successes; + failures += other.failures; + unexpected_exceptions += other.unexpected_exceptions; + completed += other.completed; + return *this; + } +}; + +struct group_statistics { + statistics_counters tests{}; + statistics_counters cases{}; + statistics_counters local_cases{}; +}; + +struct global_statistics { + statistics_counters groups{}; + statistics_counters tests{}; + statistics_counters cases{}; + std::map individual_group_statistics{}; + explicit constexpr operator bool() noexcept { + return succeeded(); + } + constexpr bool operator!() noexcept { + return failed(); + } + constexpr bool succeeded() noexcept { + return groups.successes == groups.run; + } + constexpr bool failed() noexcept { + return groups.failures > 0 || groups.unexpected_exceptions > 0; + } +}; + +class reporter_interface { +protected: + virtual ~reporter_interface() = default; + +public: + virtual void run_begin(const mpt::source_location & loc) = 0; + virtual void group_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void test_begin(const mpt::source_location & loc, const char * name) = 0; + virtual void case_run(const mpt::source_location & loc) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) = 0; + virtual void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) = 0; + virtual void case_result(const mpt::source_location & loc, const mpt::test::result & result) = 0; + virtual void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) = 0; + virtual void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) = 0; + virtual void run_end(const mpt::source_location & loc, const global_statistics & statistics) = 0; + virtual void immediate_breakpoint() = 0; +}; + +class silent_reporter + : public reporter_interface { +public: + silent_reporter() = default; + ~silent_reporter() override = default; + +public: + virtual void run_begin(const mpt::source_location &) override { + } + virtual void group_begin(const mpt::source_location &, const char *) override { + } + virtual void test_begin(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &) override { + } + virtual void case_run(const mpt::source_location &, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *) override { + } + virtual void case_run(const mpt::source_location &, const char *, const char *, const char *) override { + } + virtual void case_result(const mpt::source_location &, const mpt::test::result &) override { + } + virtual void test_end(const mpt::source_location &, const char *, const statistics_counters &) override { + } + virtual void group_end(const mpt::source_location &, const char *, const group_statistics &) override { + } + virtual void run_end(const mpt::source_location &, const global_statistics &) override { + } + virtual void immediate_breakpoint() override { + } +}; + +class simple_reporter : public reporter_interface { +private: + std::ostream & s; + +public: + simple_reporter(std::ostream & s_) + : s(s_) { + s.flush(); + } + ~simple_reporter() override { + s.flush(); + } + +public: + void run_begin(const mpt::source_location & loc) override { + static_cast(loc); + s << "Running test suite ..." << std::endl; + } + void group_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << "Running group '" << name << "' ..." << std::endl; + } + void test_begin(const mpt::source_location & loc, const char * name) override { + static_cast(loc); + s << " Running test '" << name << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc) override { + static_cast(loc); + s << " Checking ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_e) override { + static_cast(loc); + s << " Checking '" << text_e << "' ..." << std::endl; + } + void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) override { + static_cast(loc); + if (text_ex) { + s << " Checking '" << text_e << " throws " << text_ex << "' ..." << std::endl; + } else { + s << " Checking '" << text_e << " throws' ..." << std::endl; + } + } + void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) override { + static_cast(loc); + s << " Checking '" << text_a << " " << text_cmp << " " << text_b << "' ..." << std::endl; + } + void case_result(const mpt::source_location & loc, const mpt::test::result & result) override { + static_cast(loc); + s << " Checking done: "; + if (std::holds_alternative(result.info)) { + s << "Success."; + } else if (std::holds_alternative(result.info)) { + s << "FAILURE: " << std::get(result.info).text; + } else if (std::holds_alternative(result.info)) { + s << "UNEXPECTED EXCEPTION: " << std::get(result.info).text; + } + s << std::endl; + } + void test_end(const mpt::source_location & loc, const char * name, const statistics_counters & counters) override { + static_cast(loc); + static_cast(counters); + s << " Running test '" << name << "' done." << std::endl; + } + void group_end(const mpt::source_location & loc, const char * name, const group_statistics & statistics) override { + static_cast(loc); + static_cast(statistics); + s << "Running group '" << name << "' done." << std::endl; + } + void run_end(const mpt::source_location & loc, const global_statistics & statistics) override { + static_cast(loc); + s << "Running test suite done." << std::endl; + s << "groups: " << statistics.groups.total << " | " << statistics.groups.successes << " passed"; + if (statistics.groups.failures || statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.failures << " FAILED"; + if (statistics.groups.unexpected_exceptions) { + s << " | " << statistics.groups.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "tests: " << statistics.tests.total << " | " << statistics.tests.successes << " passed"; + if (statistics.tests.failures || statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.failures << " FAILED"; + if (statistics.tests.unexpected_exceptions) { + s << " | " << statistics.tests.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + s << "checks: " << statistics.cases.total << " | " << statistics.cases.successes << " passed"; + if (statistics.cases.failures || statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.failures << " FAILED"; + if (statistics.cases.unexpected_exceptions) { + s << " | " << statistics.cases.unexpected_exceptions << " UNEXPECTED EXCEPTIONS"; + } + } + s << std::endl; + } + void immediate_breakpoint() override { + return; + } +}; + +struct group; + +struct context { + mpt::test::group & group; + mpt::test::reporter_interface & reporter; + mpt::test::group_statistics statistics{}; +}; + +using void_context_function = void (*)(mpt::test::context &); + +struct group { + group * next{nullptr}; + const char * name{""}; + void_context_function func{nullptr}; + inline group(const char * name_, void_context_function f) + : name(name_) + , func(f) { + next = group_list(); + group_list() = this; + } + group_statistics run(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + mpt::test::context context{*this, reporter}; + context.reporter.group_begin(loc, name); + if (func) { + func(context); + } + context.reporter.group_end(loc, name, context.statistics); + return context.statistics; + } + +public: + [[nodiscard]] static inline group *& group_list() noexcept { + static group * group_list = nullptr; + return group_list; + } +}; + +inline global_statistics run_all(mpt::test::reporter_interface & reporter, const mpt::source_location & loc = mpt::source_location::current()) { + global_statistics statistics{}; + reporter.run_begin(loc); + for (group * g = group::group_list(); g; g = g->next) { + statistics.groups.total++; + statistics.groups.run++; + group_statistics s = g->run(reporter, loc); + if (s.tests.unexpected_exceptions) { + statistics.groups.unexpected_exceptions++; + } else if (s.tests.failures) { + statistics.groups.failures++; + } else { + statistics.groups.successes++; + } + statistics.tests += s.tests; + statistics.cases += s.cases; + statistics.groups.completed++; + statistics.individual_group_statistics[g->name] = s; + } + reporter.run_end(loc, statistics); + return statistics; +} + +struct test { + + mpt::test::context & context; + const char * name{""}; + mpt::source_location source_location{mpt::source_location::current()}; + void (*breakpoint)(void){nullptr}; + + test(const test &) = delete; + test & operator=(const test &) = delete; + + inline test(mpt::test::context & context_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + inline test(mpt::test::context & context_, const char * name_, void (*breakpoint_)(void) = nullptr, const mpt::source_location & source_location_ = mpt::source_location::current()) + : context(context_) + , name(name_) + , source_location(source_location_) + , breakpoint(breakpoint_) { + report_test_begin(); + } + + inline ~test() { + report_test_end(); + } + + void immediate_breakpoint() { + if (breakpoint) { + breakpoint(); + } else { + context.reporter.immediate_breakpoint(); + } + } + + void report_test_begin() { + context.statistics.tests.total++; + context.statistics.tests.run++; + context.statistics.local_cases = statistics_counters{}; + context.reporter.test_begin(source_location, name); + } + + void report_run() { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location); + } + void report_run(const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_e); + } + void report_run(const char * text_ex, const char * text_e) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_ex, text_e); + } + void report_run(const char * text_a, const char * text_cmp, const char * text_b) { + context.statistics.local_cases.total++; + context.statistics.local_cases.run++; + context.reporter.case_run(source_location, text_a, text_cmp, text_b); + } + + void report_result(mpt::test::result result) { + if (std::holds_alternative(result.info)) { + context.statistics.local_cases.successes++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.failures++; + } else if (std::holds_alternative(result.info)) { + context.statistics.local_cases.unexpected_exceptions++; + } + context.statistics.local_cases.completed++; + context.reporter.case_result(source_location, result); + } + + void report_test_end() { + context.statistics.cases += context.statistics.local_cases; + if (context.statistics.local_cases.unexpected_exceptions) { + context.statistics.tests.unexpected_exceptions++; + } else if (context.statistics.local_cases.failures) { + context.statistics.tests.failures++; + } else { + context.statistics.tests.successes++; + } + context.statistics.tests.completed++; + context.reporter.test_end(source_location, name, context.statistics.local_cases); + } + + template ::value, bool>::type = true> + inline test & expect_throws(Tcallable c, const char * text_ex = nullptr, const char * text_e = nullptr) { + report_run(text_ex ? text_ex : typeid(Texception).name(), text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (const Texception &) { + result.info = mpt::test::result_success{}; + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect_throws_any(Tcallable c, const char * text_e = nullptr) { + report_run(nullptr, text_e ? text_e : typeid(decltype(c())).name()); + mpt::test::result result; + try { + c(); + immediate_breakpoint(); + result.info = mpt::test::result_failure{}; + } catch (...) { + result.info = mpt::test::result_success{}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::invoke(e))).name()); + mpt::test::result result; + try { + const auto ve = std::invoke(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::invoke(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::invoke(b))).name()); + mpt::test::result result; + try { + const auto va = std::invoke(a); + const auto vb = std::invoke(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true> + inline test & expect(Texpr && e, const char * text_e = nullptr) { + report_run(text_e ? text_e : typeid(decltype(std::forward(e))).name()); + mpt::test::result result; + try { + const auto ve = std::forward(e); + if (!ve) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{/*mpt::test::format(ve)*/}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } + + template ::value, bool>::type = true, typename std::enable_if::value, bool>::type = true> + inline test & expect(Ta && a, Tcmp cmp, Tb && b, const char * text_a = nullptr, const char * text_cmp = nullptr, const char * text_b = nullptr) { + report_run(text_a ? text_a : typeid(decltype(std::forward(a))).name(), text_cmp ? text_cmp : typeid(decltype(cmp)).name(), text_b ? text_b : typeid(decltype(std::forward(b))).name()); + mpt::test::result result; + try { + const auto va = std::forward(a); + const auto vb = std::forward(b); + if (!cmp(va, vb)) { + immediate_breakpoint(); + result.info = mpt::test::result_failure{mpt::test::format(va) + " " + mpt::test::format(cmp) + " " + mpt::test::format(vb)}; + } else { + result.info = mpt::test::result_success{}; + } + } catch (...) { + immediate_breakpoint(); + result.info = mpt::test::result_unexpected_exception{mpt::test::get_exception_text()}; + } + report_result(result); + return *this; + } +}; + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_HPP Property changes on: src/mpt/test/test.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/test/test_macros.hpp =================================================================== --- src/mpt/test/test_macros.hpp (nonexistent) +++ src/mpt/test/test_macros.hpp (working copy) @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_TEST_TEST_MACROS_HPP +#define MPT_TEST_TEST_MACROS_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/base/preprocessor.hpp" +#include "mpt/test/test.hpp" + +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace test { + + + +#define MPT_TEST_GROUP_BEGIN(name) \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { +#define MPT_TEST_GROUP_END() \ + } \ + } \ + ; + +#define MPT_TEST_GROUP_INLINE_IDENTIFIER(identifier, name) \ + inline void MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_JOIN(mpt_test_group_name_, identifier) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_JOIN(mpt_test_group_func_, identifier)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_INLINE(name) \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + inline mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + inline void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_GROUP_STATIC(name) \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context); \ + static mpt::test::group MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_name) { \ + name, [](mpt::test::context & mpt_test_context) { \ + MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt_test_context); \ + } \ + }; \ + static void MPT_PP_UNIQUE_IDENTIFIER(mpt_test_group_func)(mpt::test::context & mpt_test_context) + +#define MPT_TEST_DELAYED(x) [&] { \ + return x; \ +} + +#define MPT_TEST_EXPECT mpt::test::test{context}.expect + +#define MPT_TEST_EXPECT_EXPR(e) mpt::test::test{mpt_test_context}.expect([&] { return e; }, #e) +#define MPT_TEST_EXPECT_CMP(a, cmp, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, [](const auto & a_, const auto & b_) { return a_ cmp b_; }, [&] { return b; }, #a, #cmp, #b) +#define MPT_TEST_EXPECT_THROWS_ANY(expr) mpt::test::test{mpt_test_context}.expect_throws_any([&] { expr; }, #expr) +#define MPT_TEST_EXPECT_THROWS(exception, expr) mpt::test::test{mpt_test_context}.expect_throws([&] { expr; }, #exception, #expr) + +#define MPT_TEST_EXPECT_EQUAL(a, b) mpt::test::test{mpt_test_context}.expect([&] { return a; }, std::equal_to<>{}, [&] { return b; }, #a, "==", #b) + + + +} // namespace test + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_TEST_TEST_MACROS_HPP Property changes on: src/mpt/test/test_macros.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/guid.hpp =================================================================== --- src/mpt/uuid/guid.hpp (nonexistent) +++ src/mpt/uuid/guid.hpp (working copy) @@ -0,0 +1,284 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_GUID_HPP +#define MPT_UUID_GUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +// COM CLSID<->string conversion +// A CLSID string is not necessarily a standard UUID string, +// it might also be a symbolic name for the interface. +// (see CLSIDFromString ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms680589%28v=vs.85%29.aspx )) + +inline mpt::winstring CLSIDToString(CLSID clsid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromCLSID(clsid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromCLSID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromCLSID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + ::CoTaskMemFree(tmp); + tmp = nullptr; + return mpt::convert(str); +} + +inline CLSID StringToCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + // nothing + break; + case E_INVALIDARG: + clsid = CLSID(); + break; + case CO_E_CLASSSTRING: + clsid = CLSID(); + break; + case REGDB_E_CLASSNOTREG: + clsid = CLSID(); + break; + case REGDB_E_READREGDB: + clsid = CLSID(); + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + clsid = CLSID(); + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return clsid; +} + +inline bool VerifyStringToCLSID(const mpt::winstring & str_, CLSID & clsid) { + const std::wstring str = mpt::convert(str_); + bool result = false; + clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + +inline bool IsCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + bool result = false; + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + result = false; + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + result = false; + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + + +// COM IID<->string conversion + +inline IID StringToIID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + IID iid = IID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::IIDFromString(tmp.data(), &iid)) { + case S_OK: + // nothing + break; + case E_OUTOFMEMORY: + iid = IID(); + mpt::throw_out_of_memory(); + break; + case E_INVALIDARG: + iid = IID(); + break; + default: + iid = IID(); + throw std::logic_error("IIDFromString() failed."); + break; + } + return iid; +} + +inline mpt::winstring IIDToString(IID iid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromIID(iid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromIID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromIID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + return mpt::convert(str); +} + + +// General GUID<->string conversion. +// The string must/will be in standard GUID format: {4F9A455D-E7EF-4367-B2F0-0C83A38A5C72} + +inline GUID StringToGUID(const mpt::winstring & str) { + return StringToIID(str); +} + +inline mpt::winstring GUIDToString(GUID guid) { + std::vector tmp(256); + if (::StringFromGUID2(guid, tmp.data(), static_cast(tmp.size())) <= 0) { + throw std::logic_error("StringFromGUID2() failed."); + } + return mpt::convert(tmp.data()); +} + + +// Create a COM GUID + +inline GUID CreateGUID() { + GUID guid = GUID(); + switch (::CoCreateGuid(&guid)) { + case S_OK: + // nothing + break; + default: + guid = GUID(); + throw std::runtime_error("CoCreateGuid() failed."); + } + return guid; +} + + +// Checks the UUID against the NULL UUID. Returns false if it is NULL, true otherwise. + +inline bool IsValid(::UUID uuid) { + return false + || uuid.Data1 != 0 + || uuid.Data2 != 0 + || uuid.Data3 != 0 + || uuid.Data4[0] != 0 + || uuid.Data4[1] != 0 + || uuid.Data4[2] != 0 + || uuid.Data4[3] != 0 + || uuid.Data4[4] != 0 + || uuid.Data4[5] != 0 + || uuid.Data4[6] != 0 + || uuid.Data4[7] != 0; +} + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_GUID_HPP Property changes on: src/mpt/uuid/guid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/tests/tests_uuid.hpp =================================================================== --- src/mpt/uuid/tests/tests_uuid.hpp (nonexistent) +++ src/mpt/uuid/tests/tests_uuid.hpp (working copy) @@ -0,0 +1,95 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_HPP +#define MPT_BASE_TESTS_UUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/guid.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid { + +MPT_TEST_GROUP_INLINE("mpt/uuid") +{ + using namespace mpt::uuid_literals; + + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull).ToUString(), MPT_USTRING("2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32")); +#if MPT_OS_WINDOWS + constexpr mpt::UUID uuid_tmp = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid_tmp); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToGUID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToCLSID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")); +#endif // MPT_OS_WINDOWS + + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + +#if MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::IsValid(mpt::CreateGUID()), true); + { + mpt::UUID uuid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID::FromString(mpt::UUID(uuid).ToUString())); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToGUID(mpt::GUIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToIID(mpt::IIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToCLSID(mpt::CLSIDToString(uuid)))); + } + { + GUID guid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, static_cast(mpt::UUID::FromString(mpt::UUID(guid).ToUString()))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToGUID(mpt::GUIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToIID(mpt::IIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToCLSID(mpt::CLSIDToString(guid))), TRUE); + } +#endif // MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::GenerateLocalUseOnly(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng) != mpt::UUID::Generate(prng), true); + mpt::UUID a = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(a, mpt::UUID::FromString(a.ToUString())); + std::byte uuiddata[16]{}; + for (std::size_t i = 0; i < 16; ++i) { + uuiddata[i] = mpt::byte_cast(static_cast(i)); + } + static_assert(sizeof(mpt::UUID) == 16); + mpt::UUIDbin uuid2; + std::memcpy(&uuid2, uuiddata, 16); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(uuid2).ToUString(), MPT_USTRING("00010203-0405-0607-0809-0a0b0c0d0e0f")); + + constexpr mpt::UUID uuid3 = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid3); +} + +} // namespace uuid +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_HPP Property changes on: src/mpt/uuid/tests/tests_uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/uuid.hpp =================================================================== --- src/mpt/uuid/uuid.hpp (nonexistent) +++ src/mpt/uuid/uuid.hpp (working copy) @@ -0,0 +1,386 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_UUID_HPP +#define MPT_UUID_UUID_HPP + + + +#include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/random/random.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Microsoft on-disk layout +struct GUIDms { + uint32le Data1; + uint16le Data2; + uint16le Data3; + uint64be Data4; // yes, big endian here +}; +constexpr bool declare_binary_safe(const GUIDms &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + +// RFC binary format +struct UUIDbin { + uint32be Data1; + uint16be Data2; + uint16be Data3; + uint64be Data4; +}; +constexpr bool declare_binary_safe(const UUIDbin &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + + + +struct UUID { +private: + uint32 Data1; + uint16 Data2; + uint16 Data3; + uint64 Data4; + +public: + MPT_CONSTEXPRINLINE uint32 GetData1() const noexcept { + return Data1; + } + MPT_CONSTEXPRINLINE uint16 GetData2() const noexcept { + return Data2; + } + MPT_CONSTEXPRINLINE uint16 GetData3() const noexcept { + return Data3; + } + MPT_CONSTEXPRINLINE uint64 GetData4() const noexcept { + return Data4; + } + +public: + MPT_CONSTEXPRINLINE uint64 GetData64_1() const noexcept { + return (static_cast(Data1) << 32) | (static_cast(Data2) << 16) | (static_cast(Data3) << 0); + } + MPT_CONSTEXPRINLINE uint64 GetData64_2() const noexcept { + return Data4; + } + +public: + // xxxxxxxx-xxxx-Mmxx-Nnxx-xxxxxxxxxxxx + // <--32-->-<16>-<16>-<-------64------> + MPT_CONSTEXPRINLINE bool IsNil() const noexcept { + return (Data1 == 0) && (Data2 == 0) && (Data3 == 0) && (Data4 == 0); + } + MPT_CONSTEXPRINLINE bool IsValid() const noexcept { + return (Data1 != 0) || (Data2 != 0) || (Data3 != 0) || (Data4 != 0); + } + MPT_CONSTEXPRINLINE uint8 Variant() const noexcept { + return Nn() >> 4u; + } + MPT_CONSTEXPRINLINE uint8 Version() const noexcept { + return Mm() >> 4u; + } + MPT_CONSTEXPRINLINE bool IsRFC4122() const noexcept { + return (Variant() & 0xcu) == 0x8u; + } + +private: + MPT_CONSTEXPRINLINE uint8 Mm() const noexcept { + return static_cast((Data3 >> 8) & 0xffu); + } + MPT_CONSTEXPRINLINE uint8 Nn() const noexcept { + return static_cast((Data4 >> 56) & 0xffu); + } + void MakeRFC4122(uint8 version) noexcept { + // variant + uint8 Nn = static_cast((Data4 >> 56) & 0xffu); + Data4 &= 0x00ffffffffffffffull; + Nn &= ~(0xc0u); + Nn |= 0x80u; + Data4 |= static_cast(Nn) << 56; + // version + version &= 0x0fu; + uint8 Mm = static_cast((Data3 >> 8) & 0xffu); + Data3 &= 0x00ffu; + Mm &= ~(0xf0u); + Mm |= (version << 4u); + Data3 |= static_cast(Mm) << 8; + } +#if MPT_OS_WINDOWS +private: + static mpt::UUID UUIDFromWin32(::UUID uuid) { + return mpt::UUID(uuid.Data1, uuid.Data2, uuid.Data3, (static_cast(0) | (static_cast(uuid.Data4[0]) << 56) | (static_cast(uuid.Data4[1]) << 48) | (static_cast(uuid.Data4[2]) << 40) | (static_cast(uuid.Data4[3]) << 32) | (static_cast(uuid.Data4[4]) << 24) | (static_cast(uuid.Data4[5]) << 16) | (static_cast(uuid.Data4[6]) << 8) | (static_cast(uuid.Data4[7]) << 0))); + } + static ::UUID UUIDToWin32(mpt::UUID uuid) { + ::UUID result = ::UUID(); + result.Data1 = uuid.GetData1(); + result.Data2 = uuid.GetData2(); + result.Data3 = uuid.GetData3(); + result.Data4[0] = static_cast(uuid.GetData4() >> 56); + result.Data4[1] = static_cast(uuid.GetData4() >> 48); + result.Data4[2] = static_cast(uuid.GetData4() >> 40); + result.Data4[3] = static_cast(uuid.GetData4() >> 32); + result.Data4[4] = static_cast(uuid.GetData4() >> 24); + result.Data4[5] = static_cast(uuid.GetData4() >> 16); + result.Data4[6] = static_cast(uuid.GetData4() >> 8); + result.Data4[7] = static_cast(uuid.GetData4() >> 0); + return result; + } + +public: + explicit UUID(::UUID uuid) { + *this = UUIDFromWin32(uuid); + } + operator ::UUID() const { + return UUIDToWin32(*this); + } +#endif // MPT_OS_WINDOWS +private: + static MPT_CONSTEXPRINLINE uint8 NibbleFromChar(char x) { + return ('0' <= x && x <= '9') ? static_cast(x - '0' + 0) : ('a' <= x && x <= 'z') ? static_cast(x - 'a' + 10) + : ('A' <= x && x <= 'Z') ? static_cast(x - 'A' + 10) + : mpt::constexpr_throw(std::domain_error("")); + } + static MPT_CONSTEXPRINLINE uint8 ByteFromHex(char x, char y) { + return static_cast(uint8(0) | (NibbleFromChar(x) << 4) | (NibbleFromChar(y) << 0)); + } + static MPT_CONSTEXPRINLINE uint16 ParseHex16(const char * str) { + return static_cast(uint16(0) | (static_cast(ByteFromHex(str[0], str[1])) << 8) | (static_cast(ByteFromHex(str[2], str[3])) << 0)); + } + static MPT_CONSTEXPRINLINE uint32 ParseHex32(const char * str) { + return static_cast(uint32(0) | (static_cast(ByteFromHex(str[0], str[1])) << 24) | (static_cast(ByteFromHex(str[2], str[3])) << 16) | (static_cast(ByteFromHex(str[4], str[5])) << 8) | (static_cast(ByteFromHex(str[6], str[7])) << 0)); + } + +public: + static MPT_CONSTEXPRINLINE UUID ParseLiteral(const char * str, std::size_t len) { + return (len == 36 && str[8] == '-' && str[13] == '-' && str[18] == '-' && str[23] == '-') ? mpt::UUID( + ParseHex32(str + 0), + ParseHex16(str + 9), + ParseHex16(str + 14), + uint64(0) + | (static_cast(ParseHex16(str + 19)) << 48) + | (static_cast(ParseHex16(str + 24)) << 32) + | (static_cast(ParseHex32(str + 28)) << 0)) + : mpt::constexpr_throw(std::domain_error("")); + } + +public: + MPT_CONSTEXPRINLINE UUID() noexcept + : Data1(0) + , Data2(0) + , Data3(0) + , Data4(0) { + return; + } + MPT_CONSTEXPRINLINE explicit UUID(uint32 Data1, uint16 Data2, uint16 Data3, uint64 Data4) noexcept + : Data1(Data1) + , Data2(Data2) + , Data3(Data3) + , Data4(Data4) { + return; + } + explicit UUID(UUIDbin uuid) { + Data1 = uuid.Data1.get(); + Data2 = uuid.Data2.get(); + Data3 = uuid.Data3.get(); + Data4 = uuid.Data4.get(); + } + explicit UUID(GUIDms guid) { + Data1 = guid.Data1.get(); + Data2 = guid.Data2.get(); + Data3 = guid.Data3.get(); + Data4 = guid.Data4.get(); + } + operator UUIDbin() const { + UUIDbin result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + operator GUIDms() const { + GUIDms result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + +public: + // Create a UUID + template + static UUID Generate(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreate(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return mpt::UUID::RFC4122Random(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + return RFC4122Random(rng); +#endif + } + // Create a UUID that contains local, traceable information. + // Safe for local use. May be faster. + template + static UUID GenerateLocalUseOnly(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT +#if _WIN32_WINNT >= 0x0501 + // Available since Win2000, but we check for WinXP in order to not use this + // function in Win32old builds. It is not available on some non-fully + // patched Win98SE installs in the wild. + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreateSequential(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return Generate(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + // Fallback to ::UuidCreate is safe as ::UuidCreateSequential is only a + // tiny performance optimization. + return Generate(rng); +#endif +#else + return RFC4122Random(rng); +#endif + } + // Create a RFC4122 Random UUID. + template + static UUID RFC4122Random(Trng & prng) { + UUID result; + result.Data1 = mpt::random(prng); + result.Data2 = mpt::random(prng); + result.Data3 = mpt::random(prng); + result.Data4 = mpt::random(prng); + result.MakeRFC4122(4); + return result; + } + friend UUID UUIDRFC4122NamespaceV3(const UUID & ns, const mpt::ustring & name); + friend UUID UUIDRFC4122NamespaceV5(const UUID & ns, const mpt::ustring & name); + +public: + // General UUID<->string conversion. + // The string must/will be in standard UUID format: 4f9a455d-e7ef-4367-b2f0-0c83a38a5c72 + static UUID FromString(const mpt::ustring & str) { + std::vector segments = mpt::split(str, MPT_ULITERAL("-")); + if (segments.size() != 5) { + return UUID(); + } + if (segments[0].length() != 8) { + return UUID(); + } + if (segments[1].length() != 4) { + return UUID(); + } + if (segments[2].length() != 4) { + return UUID(); + } + if (segments[3].length() != 4) { + return UUID(); + } + if (segments[4].length() != 12) { + return UUID(); + } + UUID result; + result.Data1 = mpt::ConvertHexStringTo(segments[0]); + result.Data2 = mpt::ConvertHexStringTo(segments[1]); + result.Data3 = mpt::ConvertHexStringTo(segments[2]); + result.Data4 = mpt::ConvertHexStringTo(segments[3] + segments[4]); + return result; + } + mpt::ustring ToUString() const { + return mpt::ustring() + + mpt::format::hex0<8>(GetData1()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData2()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData3()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 48)) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 32)) + + mpt::format::hex0<8>(static_cast(GetData4() >> 0)); + } +}; + +MPT_CONSTEXPRINLINE bool operator==(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() == b.GetData1()) && (a.GetData2() == b.GetData2()) && (a.GetData3() == b.GetData3()) && (a.GetData4() == b.GetData4()); +} + +MPT_CONSTEXPRINLINE bool operator!=(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() != b.GetData1()) || (a.GetData2() != b.GetData2()) || (a.GetData3() != b.GetData3()) || (a.GetData4() != b.GetData4()); +} + + +namespace uuid_literals { + +MPT_CONSTEXPRINLINE mpt::UUID operator"" _uuid(const char * str, std::size_t len) { + return mpt::UUID::ParseLiteral(str, len); +} + +} // namespace uuid_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_UUID_HPP Property changes on: src/mpt/uuid/uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/guid.hpp =================================================================== --- src/mpt/uuid/guid.hpp (nonexistent) +++ src/mpt/uuid/guid.hpp (working copy) @@ -0,0 +1,284 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_GUID_HPP +#define MPT_UUID_GUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + +#if MPT_OS_WINDOWS +#include +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + + + +// COM CLSID<->string conversion +// A CLSID string is not necessarily a standard UUID string, +// it might also be a symbolic name for the interface. +// (see CLSIDFromString ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms680589%28v=vs.85%29.aspx )) + +inline mpt::winstring CLSIDToString(CLSID clsid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromCLSID(clsid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromCLSID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromCLSID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + ::CoTaskMemFree(tmp); + tmp = nullptr; + return mpt::convert(str); +} + +inline CLSID StringToCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + // nothing + break; + case E_INVALIDARG: + clsid = CLSID(); + break; + case CO_E_CLASSSTRING: + clsid = CLSID(); + break; + case REGDB_E_CLASSNOTREG: + clsid = CLSID(); + break; + case REGDB_E_READREGDB: + clsid = CLSID(); + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + clsid = CLSID(); + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return clsid; +} + +inline bool VerifyStringToCLSID(const mpt::winstring & str_, CLSID & clsid) { + const std::wstring str = mpt::convert(str_); + bool result = false; + clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + +inline bool IsCLSID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + bool result = false; + CLSID clsid = CLSID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::CLSIDFromString(tmp.data(), &clsid)) { + case NOERROR: + result = true; + break; + case E_INVALIDARG: + result = false; + break; + case CO_E_CLASSSTRING: + result = false; + break; + case REGDB_E_CLASSNOTREG: + result = false; + break; + case REGDB_E_READREGDB: + result = false; + throw std::runtime_error("CLSIDFromString() failed: REGDB_E_READREGDB."); + break; + default: + result = false; + throw std::logic_error("CLSIDFromString() failed."); + break; + } + return result; +} + + +// COM IID<->string conversion + +inline IID StringToIID(const mpt::winstring & str_) { + const std::wstring str = mpt::convert(str_); + IID iid = IID(); + std::vector tmp(str.c_str(), str.c_str() + str.length() + 1); + switch (::IIDFromString(tmp.data(), &iid)) { + case S_OK: + // nothing + break; + case E_OUTOFMEMORY: + iid = IID(); + mpt::throw_out_of_memory(); + break; + case E_INVALIDARG: + iid = IID(); + break; + default: + iid = IID(); + throw std::logic_error("IIDFromString() failed."); + break; + } + return iid; +} + +inline mpt::winstring IIDToString(IID iid) { + std::wstring str; + LPOLESTR tmp = nullptr; + switch (::StringFromIID(iid, &tmp)) { + case S_OK: + break; + case E_OUTOFMEMORY: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + mpt::throw_out_of_memory(); + break; + default: + if (tmp) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + } + throw std::logic_error("StringFromIID() failed."); + break; + } + if (!tmp) { + throw std::logic_error("StringFromIID() failed."); + } + try { + str = tmp; + } catch (mpt::out_of_memory e) { + ::CoTaskMemFree(tmp); + tmp = nullptr; + mpt::rethrow_out_of_memory(e); + } + return mpt::convert(str); +} + + +// General GUID<->string conversion. +// The string must/will be in standard GUID format: {4F9A455D-E7EF-4367-B2F0-0C83A38A5C72} + +inline GUID StringToGUID(const mpt::winstring & str) { + return StringToIID(str); +} + +inline mpt::winstring GUIDToString(GUID guid) { + std::vector tmp(256); + if (::StringFromGUID2(guid, tmp.data(), static_cast(tmp.size())) <= 0) { + throw std::logic_error("StringFromGUID2() failed."); + } + return mpt::convert(tmp.data()); +} + + +// Create a COM GUID + +inline GUID CreateGUID() { + GUID guid = GUID(); + switch (::CoCreateGuid(&guid)) { + case S_OK: + // nothing + break; + default: + guid = GUID(); + throw std::runtime_error("CoCreateGuid() failed."); + } + return guid; +} + + +// Checks the UUID against the NULL UUID. Returns false if it is NULL, true otherwise. + +inline bool IsValid(::UUID uuid) { + return false + || uuid.Data1 != 0 + || uuid.Data2 != 0 + || uuid.Data3 != 0 + || uuid.Data4[0] != 0 + || uuid.Data4[1] != 0 + || uuid.Data4[2] != 0 + || uuid.Data4[3] != 0 + || uuid.Data4[4] != 0 + || uuid.Data4[5] != 0 + || uuid.Data4[6] != 0 + || uuid.Data4[7] != 0; +} + + + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_GUID_HPP Property changes on: src/mpt/uuid/guid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/tests/tests_uuid.hpp =================================================================== --- src/mpt/uuid/tests/tests_uuid.hpp (nonexistent) +++ src/mpt/uuid/tests/tests_uuid.hpp (working copy) @@ -0,0 +1,95 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_HPP +#define MPT_BASE_TESTS_UUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/guid.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid { + +MPT_TEST_GROUP_INLINE("mpt/uuid") +{ + using namespace mpt::uuid_literals; + + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull).ToUString(), MPT_USTRING("2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32")); +#if MPT_OS_WINDOWS + constexpr mpt::UUID uuid_tmp = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid_tmp); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToGUID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToCLSID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")); +#endif // MPT_OS_WINDOWS + + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + +#if MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::IsValid(mpt::CreateGUID()), true); + { + mpt::UUID uuid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID::FromString(mpt::UUID(uuid).ToUString())); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToGUID(mpt::GUIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToIID(mpt::IIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToCLSID(mpt::CLSIDToString(uuid)))); + } + { + GUID guid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, static_cast(mpt::UUID::FromString(mpt::UUID(guid).ToUString()))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToGUID(mpt::GUIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToIID(mpt::IIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToCLSID(mpt::CLSIDToString(guid))), TRUE); + } +#endif // MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::GenerateLocalUseOnly(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng) != mpt::UUID::Generate(prng), true); + mpt::UUID a = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(a, mpt::UUID::FromString(a.ToUString())); + std::byte uuiddata[16]{}; + for (std::size_t i = 0; i < 16; ++i) { + uuiddata[i] = mpt::byte_cast(static_cast(i)); + } + static_assert(sizeof(mpt::UUID) == 16); + mpt::UUIDbin uuid2; + std::memcpy(&uuid2, uuiddata, 16); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(uuid2).ToUString(), MPT_USTRING("00010203-0405-0607-0809-0a0b0c0d0e0f")); + + constexpr mpt::UUID uuid3 = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid3); +} + +} // namespace uuid +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_HPP Property changes on: src/mpt/uuid/tests/tests_uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/tests/tests_uuid.hpp =================================================================== --- src/mpt/uuid/tests/tests_uuid.hpp (nonexistent) +++ src/mpt/uuid/tests/tests_uuid.hpp (working copy) @@ -0,0 +1,95 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_HPP +#define MPT_BASE_TESTS_UUID_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/random/default_engines.hpp" +#include "mpt/random/device.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/guid.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid { + +MPT_TEST_GROUP_INLINE("mpt/uuid") +{ + using namespace mpt::uuid_literals; + + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull).ToUString(), MPT_USTRING("2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32")); +#if MPT_OS_WINDOWS + constexpr mpt::UUID uuid_tmp = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid_tmp); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToGUID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(mpt::StringToCLSID(TEXT("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull), mpt::UUID(mpt::StringToGUID(TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")))); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-8899-AABBCCDDEEFF}")); + MPT_TEST_EXPECT_EQUAL(mpt::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull)), TEXT("{00112233-4455-6677-C899-AABBCCDDEEFF}")); +#endif // MPT_OS_WINDOWS + + mpt::sane_random_device rd; + mpt::good_engine prng = mpt::make_prng(rd); + +#if MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::IsValid(mpt::CreateGUID()), true); + { + mpt::UUID uuid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID::FromString(mpt::UUID(uuid).ToUString())); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToGUID(mpt::GUIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToIID(mpt::IIDToString(uuid)))); + MPT_TEST_EXPECT_EQUAL(uuid, mpt::UUID(mpt::StringToCLSID(mpt::CLSIDToString(uuid)))); + } + { + GUID guid = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, static_cast(mpt::UUID::FromString(mpt::UUID(guid).ToUString()))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToGUID(mpt::GUIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToIID(mpt::IIDToString(guid))), TRUE); + MPT_TEST_EXPECT_EQUAL(IsEqualGUID(guid, mpt::StringToCLSID(mpt::CLSIDToString(guid))), TRUE); + } +#endif // MPT_OS_WINDOWS + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::GenerateLocalUseOnly(prng).IsValid(), true); + MPT_TEST_EXPECT_EQUAL(mpt::UUID::Generate(prng) != mpt::UUID::Generate(prng), true); + mpt::UUID a = mpt::UUID::Generate(prng); + MPT_TEST_EXPECT_EQUAL(a, mpt::UUID::FromString(a.ToUString())); + std::byte uuiddata[16]{}; + for (std::size_t i = 0; i < 16; ++i) { + uuiddata[i] = mpt::byte_cast(static_cast(i)); + } + static_assert(sizeof(mpt::UUID) == 16); + mpt::UUIDbin uuid2; + std::memcpy(&uuid2, uuiddata, 16); + MPT_TEST_EXPECT_EQUAL(mpt::UUID(uuid2).ToUString(), MPT_USTRING("00010203-0405-0607-0809-0a0b0c0d0e0f")); + + constexpr mpt::UUID uuid3 = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; + MPT_TEST_EXPECT_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid3); +} + +} // namespace uuid +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_HPP Property changes on: src/mpt/uuid/tests/tests_uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid/uuid.hpp =================================================================== --- src/mpt/uuid/uuid.hpp (nonexistent) +++ src/mpt/uuid/uuid.hpp (working copy) @@ -0,0 +1,386 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_UUID_HPP +#define MPT_UUID_UUID_HPP + + + +#include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/macros.hpp" +#include "mpt/base/integer.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/endian/integer.hpp" +#include "mpt/format/simple.hpp" +#include "mpt/parse/parse.hpp" +#include "mpt/random/random.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + +#if MPT_OS_WINDOWS +#include +#include +#endif // MPT_OS_WINDOWS + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + +// Microsoft on-disk layout +struct GUIDms { + uint32le Data1; + uint16le Data2; + uint16le Data3; + uint64be Data4; // yes, big endian here +}; +constexpr bool declare_binary_safe(const GUIDms &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + +// RFC binary format +struct UUIDbin { + uint32be Data1; + uint16be Data2; + uint16be Data3; + uint64be Data4; +}; +constexpr bool declare_binary_safe(const UUIDbin &) { + return true; +} +static_assert(mpt::check_binary_size(16)); + + + +struct UUID { +private: + uint32 Data1; + uint16 Data2; + uint16 Data3; + uint64 Data4; + +public: + MPT_CONSTEXPRINLINE uint32 GetData1() const noexcept { + return Data1; + } + MPT_CONSTEXPRINLINE uint16 GetData2() const noexcept { + return Data2; + } + MPT_CONSTEXPRINLINE uint16 GetData3() const noexcept { + return Data3; + } + MPT_CONSTEXPRINLINE uint64 GetData4() const noexcept { + return Data4; + } + +public: + MPT_CONSTEXPRINLINE uint64 GetData64_1() const noexcept { + return (static_cast(Data1) << 32) | (static_cast(Data2) << 16) | (static_cast(Data3) << 0); + } + MPT_CONSTEXPRINLINE uint64 GetData64_2() const noexcept { + return Data4; + } + +public: + // xxxxxxxx-xxxx-Mmxx-Nnxx-xxxxxxxxxxxx + // <--32-->-<16>-<16>-<-------64------> + MPT_CONSTEXPRINLINE bool IsNil() const noexcept { + return (Data1 == 0) && (Data2 == 0) && (Data3 == 0) && (Data4 == 0); + } + MPT_CONSTEXPRINLINE bool IsValid() const noexcept { + return (Data1 != 0) || (Data2 != 0) || (Data3 != 0) || (Data4 != 0); + } + MPT_CONSTEXPRINLINE uint8 Variant() const noexcept { + return Nn() >> 4u; + } + MPT_CONSTEXPRINLINE uint8 Version() const noexcept { + return Mm() >> 4u; + } + MPT_CONSTEXPRINLINE bool IsRFC4122() const noexcept { + return (Variant() & 0xcu) == 0x8u; + } + +private: + MPT_CONSTEXPRINLINE uint8 Mm() const noexcept { + return static_cast((Data3 >> 8) & 0xffu); + } + MPT_CONSTEXPRINLINE uint8 Nn() const noexcept { + return static_cast((Data4 >> 56) & 0xffu); + } + void MakeRFC4122(uint8 version) noexcept { + // variant + uint8 Nn = static_cast((Data4 >> 56) & 0xffu); + Data4 &= 0x00ffffffffffffffull; + Nn &= ~(0xc0u); + Nn |= 0x80u; + Data4 |= static_cast(Nn) << 56; + // version + version &= 0x0fu; + uint8 Mm = static_cast((Data3 >> 8) & 0xffu); + Data3 &= 0x00ffu; + Mm &= ~(0xf0u); + Mm |= (version << 4u); + Data3 |= static_cast(Mm) << 8; + } +#if MPT_OS_WINDOWS +private: + static mpt::UUID UUIDFromWin32(::UUID uuid) { + return mpt::UUID(uuid.Data1, uuid.Data2, uuid.Data3, (static_cast(0) | (static_cast(uuid.Data4[0]) << 56) | (static_cast(uuid.Data4[1]) << 48) | (static_cast(uuid.Data4[2]) << 40) | (static_cast(uuid.Data4[3]) << 32) | (static_cast(uuid.Data4[4]) << 24) | (static_cast(uuid.Data4[5]) << 16) | (static_cast(uuid.Data4[6]) << 8) | (static_cast(uuid.Data4[7]) << 0))); + } + static ::UUID UUIDToWin32(mpt::UUID uuid) { + ::UUID result = ::UUID(); + result.Data1 = uuid.GetData1(); + result.Data2 = uuid.GetData2(); + result.Data3 = uuid.GetData3(); + result.Data4[0] = static_cast(uuid.GetData4() >> 56); + result.Data4[1] = static_cast(uuid.GetData4() >> 48); + result.Data4[2] = static_cast(uuid.GetData4() >> 40); + result.Data4[3] = static_cast(uuid.GetData4() >> 32); + result.Data4[4] = static_cast(uuid.GetData4() >> 24); + result.Data4[5] = static_cast(uuid.GetData4() >> 16); + result.Data4[6] = static_cast(uuid.GetData4() >> 8); + result.Data4[7] = static_cast(uuid.GetData4() >> 0); + return result; + } + +public: + explicit UUID(::UUID uuid) { + *this = UUIDFromWin32(uuid); + } + operator ::UUID() const { + return UUIDToWin32(*this); + } +#endif // MPT_OS_WINDOWS +private: + static MPT_CONSTEXPRINLINE uint8 NibbleFromChar(char x) { + return ('0' <= x && x <= '9') ? static_cast(x - '0' + 0) : ('a' <= x && x <= 'z') ? static_cast(x - 'a' + 10) + : ('A' <= x && x <= 'Z') ? static_cast(x - 'A' + 10) + : mpt::constexpr_throw(std::domain_error("")); + } + static MPT_CONSTEXPRINLINE uint8 ByteFromHex(char x, char y) { + return static_cast(uint8(0) | (NibbleFromChar(x) << 4) | (NibbleFromChar(y) << 0)); + } + static MPT_CONSTEXPRINLINE uint16 ParseHex16(const char * str) { + return static_cast(uint16(0) | (static_cast(ByteFromHex(str[0], str[1])) << 8) | (static_cast(ByteFromHex(str[2], str[3])) << 0)); + } + static MPT_CONSTEXPRINLINE uint32 ParseHex32(const char * str) { + return static_cast(uint32(0) | (static_cast(ByteFromHex(str[0], str[1])) << 24) | (static_cast(ByteFromHex(str[2], str[3])) << 16) | (static_cast(ByteFromHex(str[4], str[5])) << 8) | (static_cast(ByteFromHex(str[6], str[7])) << 0)); + } + +public: + static MPT_CONSTEXPRINLINE UUID ParseLiteral(const char * str, std::size_t len) { + return (len == 36 && str[8] == '-' && str[13] == '-' && str[18] == '-' && str[23] == '-') ? mpt::UUID( + ParseHex32(str + 0), + ParseHex16(str + 9), + ParseHex16(str + 14), + uint64(0) + | (static_cast(ParseHex16(str + 19)) << 48) + | (static_cast(ParseHex16(str + 24)) << 32) + | (static_cast(ParseHex32(str + 28)) << 0)) + : mpt::constexpr_throw(std::domain_error("")); + } + +public: + MPT_CONSTEXPRINLINE UUID() noexcept + : Data1(0) + , Data2(0) + , Data3(0) + , Data4(0) { + return; + } + MPT_CONSTEXPRINLINE explicit UUID(uint32 Data1, uint16 Data2, uint16 Data3, uint64 Data4) noexcept + : Data1(Data1) + , Data2(Data2) + , Data3(Data3) + , Data4(Data4) { + return; + } + explicit UUID(UUIDbin uuid) { + Data1 = uuid.Data1.get(); + Data2 = uuid.Data2.get(); + Data3 = uuid.Data3.get(); + Data4 = uuid.Data4.get(); + } + explicit UUID(GUIDms guid) { + Data1 = guid.Data1.get(); + Data2 = guid.Data2.get(); + Data3 = guid.Data3.get(); + Data4 = guid.Data4.get(); + } + operator UUIDbin() const { + UUIDbin result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + operator GUIDms() const { + GUIDms result{}; + result.Data1 = GetData1(); + result.Data2 = GetData2(); + result.Data3 = GetData3(); + result.Data4 = GetData4(); + return result; + } + +public: + // Create a UUID + template + static UUID Generate(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreate(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return mpt::UUID::RFC4122Random(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + return RFC4122Random(rng); +#endif + } + // Create a UUID that contains local, traceable information. + // Safe for local use. May be faster. + template + static UUID GenerateLocalUseOnly(Trng & rng) { +#if MPT_OS_WINDOWS && MPT_OS_WINDOWS_WINRT +#if (_WIN32_WINNT >= 0x0602) + ::GUID guid = ::GUID(); + HRESULT result = CoCreateGuid(&guid); + if (result != S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(guid); +#else + return mpt::UUID::RFC4122Random(rng); +#endif +#elif MPT_OS_WINDOWS && !MPT_OS_WINDOWS_WINRT +#if _WIN32_WINNT >= 0x0501 + // Available since Win2000, but we check for WinXP in order to not use this + // function in Win32old builds. It is not available on some non-fully + // patched Win98SE installs in the wild. + ::UUID uuid = ::UUID(); + RPC_STATUS status = ::UuidCreateSequential(&uuid); + if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) { + return Generate(rng); + } + status = RPC_S_OK; + if (UuidIsNil(&uuid, &status) != FALSE) { + return mpt::UUID::RFC4122Random(rng); + } + if (status != RPC_S_OK) { + return mpt::UUID::RFC4122Random(rng); + } + return mpt::UUID::UUIDFromWin32(uuid); +#else + // Fallback to ::UuidCreate is safe as ::UuidCreateSequential is only a + // tiny performance optimization. + return Generate(rng); +#endif +#else + return RFC4122Random(rng); +#endif + } + // Create a RFC4122 Random UUID. + template + static UUID RFC4122Random(Trng & prng) { + UUID result; + result.Data1 = mpt::random(prng); + result.Data2 = mpt::random(prng); + result.Data3 = mpt::random(prng); + result.Data4 = mpt::random(prng); + result.MakeRFC4122(4); + return result; + } + friend UUID UUIDRFC4122NamespaceV3(const UUID & ns, const mpt::ustring & name); + friend UUID UUIDRFC4122NamespaceV5(const UUID & ns, const mpt::ustring & name); + +public: + // General UUID<->string conversion. + // The string must/will be in standard UUID format: 4f9a455d-e7ef-4367-b2f0-0c83a38a5c72 + static UUID FromString(const mpt::ustring & str) { + std::vector segments = mpt::split(str, MPT_ULITERAL("-")); + if (segments.size() != 5) { + return UUID(); + } + if (segments[0].length() != 8) { + return UUID(); + } + if (segments[1].length() != 4) { + return UUID(); + } + if (segments[2].length() != 4) { + return UUID(); + } + if (segments[3].length() != 4) { + return UUID(); + } + if (segments[4].length() != 12) { + return UUID(); + } + UUID result; + result.Data1 = mpt::ConvertHexStringTo(segments[0]); + result.Data2 = mpt::ConvertHexStringTo(segments[1]); + result.Data3 = mpt::ConvertHexStringTo(segments[2]); + result.Data4 = mpt::ConvertHexStringTo(segments[3] + segments[4]); + return result; + } + mpt::ustring ToUString() const { + return mpt::ustring() + + mpt::format::hex0<8>(GetData1()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData2()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(GetData3()) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 48)) + + MPT_USTRING("-") + + mpt::format::hex0<4>(static_cast(GetData4() >> 32)) + + mpt::format::hex0<8>(static_cast(GetData4() >> 0)); + } +}; + +MPT_CONSTEXPRINLINE bool operator==(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() == b.GetData1()) && (a.GetData2() == b.GetData2()) && (a.GetData3() == b.GetData3()) && (a.GetData4() == b.GetData4()); +} + +MPT_CONSTEXPRINLINE bool operator!=(const mpt::UUID & a, const mpt::UUID & b) noexcept { + return (a.GetData1() != b.GetData1()) || (a.GetData2() != b.GetData2()) || (a.GetData3() != b.GetData3()) || (a.GetData4() != b.GetData4()); +} + + +namespace uuid_literals { + +MPT_CONSTEXPRINLINE mpt::UUID operator"" _uuid(const char * str, std::size_t len) { + return mpt::UUID::ParseLiteral(str, len); +} + +} // namespace uuid_literals + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_UUID_HPP Property changes on: src/mpt/uuid/uuid.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_NAMESPACE_HPP +#define MPT_BASE_TESTS_UUID_NAMESPACE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/uuid.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid_namespace { + +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +{ + constexpr mpt::UUID uuid_ns_dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"_uuid; + constexpr mpt::UUID expected = "74738ff5-5367-5958-9aee-98fffdcd1876"_uuid; + mpt::UUID gotten = mpt::UUIDRFC4122NamespaceV5(uuid_ns_dns, MPT_USTRING("www.example.org")); + MPT_TEST_EXPECT_EQUAL(gotten, expected); +} + +} // namespace uuid_namespace +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/uuid_namespace.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP +#define MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + +// Create a RFC4122 Version 3 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV3(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::MD5().process(mpt::as_span(buf)).result(); + mpt::UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(3); + return uuid; +} + +// Create a RFC4122 Version 5 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV5(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::SHA1().process(mpt::as_span(buf)).result(); + UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(5); + return uuid; +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_NAMESPACE_HPP +#define MPT_BASE_TESTS_UUID_NAMESPACE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/uuid.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid_namespace { + +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +{ + constexpr mpt::UUID uuid_ns_dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"_uuid; + constexpr mpt::UUID expected = "74738ff5-5367-5958-9aee-98fffdcd1876"_uuid; + mpt::UUID gotten = mpt::UUIDRFC4122NamespaceV5(uuid_ns_dns, MPT_USTRING("www.example.org")); + MPT_TEST_EXPECT_EQUAL(gotten, expected); +} + +} // namespace uuid_namespace +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp (working copy) @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_TESTS_UUID_NAMESPACE_HPP +#define MPT_BASE_TESTS_UUID_NAMESPACE_HPP + + + +#include "mpt/base/namespace.hpp" +#include "mpt/string/types.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" +#include "mpt/uuid/uuid.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +namespace tests { +namespace uuid_namespace { + +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +{ + constexpr mpt::UUID uuid_ns_dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"_uuid; + constexpr mpt::UUID expected = "74738ff5-5367-5958-9aee-98fffdcd1876"_uuid; + mpt::UUID gotten = mpt::UUIDRFC4122NamespaceV5(uuid_ns_dns, MPT_USTRING("www.example.org")); + MPT_TEST_EXPECT_EQUAL(gotten, expected); +} + +} // namespace uuid_namespace +} // namespace tests + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_BASE_TESTS_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/tests/tests_uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: src/mpt/uuid_namespace/uuid_namespace.hpp =================================================================== --- src/mpt/uuid_namespace/uuid_namespace.hpp (nonexistent) +++ src/mpt/uuid_namespace/uuid_namespace.hpp (working copy) @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP +#define MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP + + + +#include "mpt/base/detect.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/namespace.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string_convert/convert.hpp" +#include "mpt/uuid/uuid.hpp" + +#include +#include +#include +#include + + + +namespace mpt { +inline namespace MPT_INLINE_NS { + + + +#if MPT_OS_WINDOWS + +// Create a RFC4122 Version 3 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV3(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::MD5().process(mpt::as_span(buf)).result(); + mpt::UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(3); + return uuid; +} + +// Create a RFC4122 Version 5 namespace UUID +inline mpt::UUID UUIDRFC4122NamespaceV5(const mpt::UUID & ns, const mpt::ustring & name) { + mpt::UUIDbin binns = ns; + std::vector buf; + buf.resize(sizeof(mpt::UUIDbin)); + std::copy(mpt::as_raw_memory(binns).data(), mpt::as_raw_memory(binns).data() + sizeof(mpt::UUIDbin), buf.data()); + std::string utf8name = mpt::convert(mpt::common_encoding::utf8, name); + buf.resize(buf.size() + utf8name.length()); + std::transform(utf8name.begin(), utf8name.end(), buf.data() + sizeof(mpt::UUIDbin), [](char c) { return mpt::byte_cast(c); }); + std::array hash = mpt::crypto::hash::SHA1().process(mpt::as_span(buf)).result(); + UUIDbin uuidbin; + std::copy(hash.begin(), hash.begin() + 16, mpt::as_raw_memory(uuidbin).data()); + mpt::UUID uuid{uuidbin}; + uuid.MakeRFC4122(5); + return uuid; +} + +#endif // MPT_OS_WINDOWS + + + +} // namespace MPT_INLINE_NS +} // namespace mpt + + + +#endif // MPT_UUID_NAMESPACE_UUID_NAMESPACE_HPP Property changes on: src/mpt/uuid_namespace/uuid_namespace.hpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++hdr \ No newline at end of property Index: test/mpt_tests_base.cpp =================================================================== --- test/mpt_tests_base.cpp (nonexistent) +++ test/mpt_tests_base.cpp (working copy) @@ -0,0 +1,13 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/base/tests/tests_base_arithmetic_shift.hpp" +#include "mpt/base/tests/tests_base_bit.hpp" +#include "mpt/base/tests/tests_base_math.hpp" +#include "mpt/base/tests/tests_base_saturate_cast.hpp" +#include "mpt/base/tests/tests_base_saturate_round.hpp" +#include "mpt/base/tests/tests_base_wrapping_divide.hpp" + +#endif Property changes on: test/mpt_tests_base.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_binary.cpp =================================================================== --- test/mpt_tests_binary.cpp (nonexistent) +++ test/mpt_tests_binary.cpp (working copy) @@ -0,0 +1,8 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/binary/tests/tests_binary.hpp" + +#endif Property changes on: test/mpt_tests_binary.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_crc.cpp =================================================================== --- test/mpt_tests_crc.cpp (nonexistent) +++ test/mpt_tests_crc.cpp (working copy) @@ -0,0 +1,8 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/crc/tests/tests_crc.hpp" + +#endif Property changes on: test/mpt_tests_crc.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_crypto.cpp =================================================================== --- test/mpt_tests_crypto.cpp (nonexistent) +++ test/mpt_tests_crypto.cpp (working copy) @@ -0,0 +1,10 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#ifdef MODPLUG_TRACKER +#include "mpt/crypto/tests/tests_crypto.hpp" +#endif // MODPLUG_TRACKER + +#endif Property changes on: test/mpt_tests_crypto.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_endian.cpp =================================================================== --- test/mpt_tests_endian.cpp (nonexistent) +++ test/mpt_tests_endian.cpp (working copy) @@ -0,0 +1,9 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/endian/tests/tests_endian_floatingpoint.hpp" +#include "mpt/endian/tests/tests_endian_integer.hpp" + +#endif Property changes on: test/mpt_tests_endian.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_format.cpp =================================================================== --- test/mpt_tests_format.cpp (nonexistent) +++ test/mpt_tests_format.cpp (working copy) @@ -0,0 +1,9 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/format/tests/tests_format_message.hpp" +#include "mpt/format/tests/tests_format_simple.hpp" + +#endif Property changes on: test/mpt_tests_format.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_parse.cpp =================================================================== --- test/mpt_tests_parse.cpp (nonexistent) +++ test/mpt_tests_parse.cpp (working copy) @@ -0,0 +1,8 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/parse/tests/tests_parse.hpp" + +#endif Property changes on: test/mpt_tests_parse.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_random.cpp =================================================================== --- test/mpt_tests_random.cpp (nonexistent) +++ test/mpt_tests_random.cpp (working copy) @@ -0,0 +1,8 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/random/tests/tests_random.hpp" + +#endif Property changes on: test/mpt_tests_random.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_string.cpp =================================================================== --- test/mpt_tests_string.cpp (nonexistent) +++ test/mpt_tests_string.cpp (working copy) @@ -0,0 +1,9 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/string/tests/tests_string_buffer.hpp" +#include "mpt/string/tests/tests_string_utility.hpp" + +#endif Property changes on: test/mpt_tests_string.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_string_convert.cpp =================================================================== --- test/mpt_tests_string_convert.cpp (nonexistent) +++ test/mpt_tests_string_convert.cpp (working copy) @@ -0,0 +1,8 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/string_convert/tests/tests_string_convert.hpp" + +#endif Property changes on: test/mpt_tests_string_convert.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_uuid.cpp =================================================================== --- test/mpt_tests_uuid.cpp (nonexistent) +++ test/mpt_tests_uuid.cpp (working copy) @@ -0,0 +1,8 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#include "mpt/uuid/tests/tests_uuid.hpp" + +#endif Property changes on: test/mpt_tests_uuid.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/mpt_tests_uuid_namespace.cpp =================================================================== --- test/mpt_tests_uuid_namespace.cpp (nonexistent) +++ test/mpt_tests_uuid_namespace.cpp (working copy) @@ -0,0 +1,10 @@ + +#include "stdafx.h" + +#ifdef ENABLE_TESTS + +#ifdef MODPLUG_TRACKER +#include "mpt/uuid_namespace/tests/tests_uuid_namespace.hpp" +#endif // MODPLUG_TRACKER + +#endif Property changes on: test/mpt_tests_uuid_namespace.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Index: test/test.cpp =================================================================== --- test/test.cpp (revision 14776) +++ test/test.cpp (working copy) @@ -14,7 +14,11 @@ #ifdef ENABLE_TESTS +#include "mpt/environment/environment.hpp" +#include "mpt/test/test.hpp" +#include "mpt/test/test_macros.hpp" + #include "../common/version.h" #include "../common/misc_util.h" #include "../common/mptCRC.h" @@ -106,13 +110,11 @@ static MPT_NOINLINE void TestRandom(); static MPT_NOINLINE void TestCharsets(); static MPT_NOINLINE void TestStringFormatting(); -static MPT_NOINLINE void TestCrypto(); static MPT_NOINLINE void TestSettings(); static MPT_NOINLINE void TestStringIO(); static MPT_NOINLINE void TestMIDIEvents(); static MPT_NOINLINE void TestSampleConversion(); static MPT_NOINLINE void TestITCompression(); -static MPT_NOINLINE void TestTunings(); static MPT_NOINLINE void TestPCnoteSerialization(); static MPT_NOINLINE void TestLoadSaveFile(); static MPT_NOINLINE void TestEditing(); @@ -197,6 +199,12 @@ #endif + void (*do_mpt_test)(void) = []() { + mpt_test_reporter reporter{}; + mpt::test::run_all(reporter); + }; + DO_TEST(do_mpt_test); + mpt::random_device rd; s_PRNG = new mpt::default_prng(mpt::make_prng(rd)); @@ -207,13 +215,11 @@ DO_TEST(TestRandom); DO_TEST(TestCharsets); DO_TEST(TestStringFormatting); - DO_TEST(TestCrypto); DO_TEST(TestSettings); DO_TEST(TestStringIO); DO_TEST(TestMIDIEvents); DO_TEST(TestSampleConversion); DO_TEST(TestITCompression); - DO_TEST(TestTunings); // slower tests, require opening a CModDoc DO_TEST(TestPCnoteSerialization); @@ -442,31 +448,6 @@ static_assert(int64_max == std::numeric_limits::max()); static_assert(uint64_max == std::numeric_limits::max()); - - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - static_assert(std::numeric_limits::min() == std::numeric_limits::min()); - - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - static_assert(std::numeric_limits::max() == std::numeric_limits::max()); - } @@ -547,39 +528,6 @@ -static bool BeginsWith(const std::string &str, const std::string &match) -{ - return (str.find(match) == 0); -} -static bool EndsWith(const std::string &str, const std::string &match) -{ - return (str.rfind(match) == (str.length() - match.length())); -} - -#if MPT_WSTRING_CONVERT -static bool BeginsWith(const std::wstring &str, const std::wstring &match) -{ - return (str.find(match) == 0); -} -static bool EndsWith(const std::wstring &str, const std::wstring &match) -{ - return (str.rfind(match) == (str.length() - match.length())); -} -#endif - -#if MPT_USTRING_MODE_UTF8 -static bool BeginsWith(const mpt::ustring &str, const mpt::ustring &match) -{ - return (str.find(match) == 0); -} -static bool EndsWith(const mpt::ustring &str, const mpt::ustring &match) -{ - return (str.rfind(match) == (str.length() - match.length())); -} -#endif - - - static MPT_NOINLINE void TestStringFormatting() { VERIFY_EQUAL(mpt::fmt::val(1.5f), "1.5"); @@ -868,117 +816,10 @@ return Gregorian{Y,M,D,h,m,s}; } -static MPT_CONSTEXPR20_FUN int32le TestEndianConstexpr(uint32 x) -{ - int32le foo{}; - foo = x; - return foo; -} static MPT_NOINLINE void TestMisc1() { - #if MPT_CXX_BEFORE(20) - VERIFY_EQUAL(mpt::get_endian(), mpt::detail::endian_probe()); - #endif - MPT_MAYBE_CONSTANT_IF(mpt::endian_is_little()) - { - VERIFY_EQUAL(mpt::get_endian(), mpt::endian::little); - MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) - { - VERIFY_EQUAL(mpt::endian::native, mpt::endian::little); - } - #if MPT_CXX_BEFORE(20) - VERIFY_EQUAL(mpt::detail::endian_probe(), mpt::endian::little); - #endif - } - MPT_MAYBE_CONSTANT_IF(mpt::endian_is_big()) - { - VERIFY_EQUAL(mpt::get_endian(), mpt::endian::big); - MPT_MAYBE_CONSTANT_IF((mpt::endian::native == mpt::endian::little) || (mpt::endian::native == mpt::endian::big)) - { - VERIFY_EQUAL(mpt::endian::native, mpt::endian::big); - } - #if MPT_CXX_BEFORE(20) - VERIFY_EQUAL(mpt::detail::endian_probe(), mpt::endian::big); - #endif - } - - MPT_CONSTEXPR20_VAR int32le foo = TestEndianConstexpr(23); - static_cast(foo); - - VERIFY_EQUAL(mpt::detail::SwapBytes(uint8(0x12)), 0x12); - VERIFY_EQUAL(mpt::detail::SwapBytes(uint16(0x1234)), 0x3412); - VERIFY_EQUAL(mpt::detail::SwapBytes(uint32(0x12345678u)), 0x78563412u); - VERIFY_EQUAL(mpt::detail::SwapBytes(uint64(0x123456789abcdef0ull)), 0xf0debc9a78563412ull); - - VERIFY_EQUAL(mpt::detail::SwapBytes(int8(int8_min)), int8_min); - VERIFY_EQUAL(mpt::detail::SwapBytes(int16(int16_min)), int16(0x80)); - VERIFY_EQUAL(mpt::detail::SwapBytes(int32(int32_min)), int32(0x80)); - VERIFY_EQUAL(mpt::detail::SwapBytes(int64(int64_min)), int64(0x80)); - - VERIFY_EQUAL(EncodeIEEE754binary32(1.0f), 0x3f800000u); - VERIFY_EQUAL(EncodeIEEE754binary32(-1.0f), 0xbf800000u); - VERIFY_EQUAL(DecodeIEEE754binary32(0x00000000u), 0.0f); - VERIFY_EQUAL(DecodeIEEE754binary32(0x41840000u), 16.5f); - VERIFY_EQUAL(DecodeIEEE754binary32(0x3faa0000u), 1.328125f); - VERIFY_EQUAL(DecodeIEEE754binary32(0xbfaa0000u), -1.328125f); - VERIFY_EQUAL(DecodeIEEE754binary32(0x3f800000u), 1.0f); - VERIFY_EQUAL(DecodeIEEE754binary32(0x00000000u), 0.0f); - VERIFY_EQUAL(DecodeIEEE754binary32(0xbf800000u), -1.0f); - VERIFY_EQUAL(DecodeIEEE754binary32(0x3f800000u), 1.0f); - VERIFY_EQUAL(IEEE754binary32LE(1.0f).GetInt32(), 0x3f800000u); - VERIFY_EQUAL(IEEE754binary32BE(1.0f).GetInt32(), 0x3f800000u); - VERIFY_EQUAL(IEEE754binary32LE(mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x80),mpt::as_byte(0x3f)), 1.0f); - VERIFY_EQUAL(IEEE754binary32BE(mpt::as_byte(0x3f),mpt::as_byte(0x80),mpt::as_byte(0x00),mpt::as_byte(0x00)), 1.0f); - VERIFY_EQUAL(IEEE754binary32LE(1.0f), IEEE754binary32LE(mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x80),mpt::as_byte(0x3f))); - VERIFY_EQUAL(IEEE754binary32BE(1.0f), IEEE754binary32BE(mpt::as_byte(0x3f),mpt::as_byte(0x80),mpt::as_byte(0x00),mpt::as_byte(0x00))); - - VERIFY_EQUAL(EncodeIEEE754binary64(1.0), 0x3ff0000000000000ull); - VERIFY_EQUAL(EncodeIEEE754binary64(-1.0), 0xbff0000000000000ull); - VERIFY_EQUAL(DecodeIEEE754binary64(0x0000000000000000ull), 0.0); - VERIFY_EQUAL(DecodeIEEE754binary64(0x4030800000000000ull), 16.5); - VERIFY_EQUAL(DecodeIEEE754binary64(0x3FF5400000000000ull), 1.328125); - VERIFY_EQUAL(DecodeIEEE754binary64(0xBFF5400000000000ull), -1.328125); - VERIFY_EQUAL(DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); - VERIFY_EQUAL(DecodeIEEE754binary64(0x0000000000000000ull), 0.0); - VERIFY_EQUAL(DecodeIEEE754binary64(0xbff0000000000000ull), -1.0); - VERIFY_EQUAL(DecodeIEEE754binary64(0x3ff0000000000000ull), 1.0); - VERIFY_EQUAL(IEEE754binary64LE(1.0).GetInt64(), 0x3ff0000000000000ull); - VERIFY_EQUAL(IEEE754binary64BE(1.0).GetInt64(), 0x3ff0000000000000ull); - VERIFY_EQUAL(IEEE754binary64LE(mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0xf0),mpt::as_byte(0x3f)), 1.0); - VERIFY_EQUAL(IEEE754binary64BE(mpt::as_byte(0x3f),mpt::as_byte(0xf0),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00)), 1.0); - VERIFY_EQUAL(IEEE754binary64LE(1.0), IEEE754binary64LE(mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0xf0),mpt::as_byte(0x3f))); - VERIFY_EQUAL(IEEE754binary64BE(1.0), IEEE754binary64BE(mpt::as_byte(0x3f),mpt::as_byte(0xf0),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00),mpt::as_byte(0x00))); - - // Packed integers with defined endianness - { - int8le le8; le8.set(-128); - int8be be8; be8.set(-128); - VERIFY_EQUAL(le8, -128); - VERIFY_EQUAL(be8, -128); - VERIFY_EQUAL(memcmp(&le8, "\x80", 1), 0); - VERIFY_EQUAL(memcmp(&be8, "\x80", 1), 0); - int16le le16; le16.set(0x1234); - int16be be16; be16.set(0x1234); - VERIFY_EQUAL(le16, 0x1234); - VERIFY_EQUAL(be16, 0x1234); - VERIFY_EQUAL(memcmp(&le16, "\x34\x12", 2), 0); - VERIFY_EQUAL(memcmp(&be16, "\x12\x34", 2), 0); - uint32le le32; le32.set(0xFFEEDDCCu); - uint32be be32; be32.set(0xFFEEDDCCu); - VERIFY_EQUAL(le32, 0xFFEEDDCCu); - VERIFY_EQUAL(be32, 0xFFEEDDCCu); - VERIFY_EQUAL(memcmp(&le32, "\xCC\xDD\xEE\xFF", 4), 0); - VERIFY_EQUAL(memcmp(&be32, "\xFF\xEE\xDD\xCC", 4), 0); - uint64le le64; le64.set(0xDEADC0DE15C0FFEEull); - uint64be be64; be64.set(0xDEADC0DE15C0FFEEull); - VERIFY_EQUAL(le64, 0xDEADC0DE15C0FFEEull); - VERIFY_EQUAL(be64, 0xDEADC0DE15C0FFEEull); - VERIFY_EQUAL(memcmp(&le64, "\xEE\xFF\xC0\x15\xDE\xC0\xAD\xDE", 8), 0); - VERIFY_EQUAL(memcmp(&be64, "\xDE\xAD\xC0\xDE\x15\xC0\xFF\xEE", 8), 0); - } - VERIFY_EQUAL(ModCommand::IsPcNote(NOTE_MAX), false); VERIFY_EQUAL(ModCommand::IsPcNote(NOTE_PC), true); VERIFY_EQUAL(ModCommand::IsPcNote(NOTE_PCS), true); @@ -999,637 +840,6 @@ VERIFY_EQUAL(CModSpecifications::ExtensionToType("s2m"), MOD_TYPE_NONE); VERIFY_EQUAL(CModSpecifications::ExtensionToType(""), MOD_TYPE_NONE); - VERIFY_EQUAL( mpt::round(1.99), 2.0 ); - VERIFY_EQUAL( mpt::round(1.5), 2.0 ); - VERIFY_EQUAL( mpt::round(1.1), 1.0 ); - VERIFY_EQUAL( mpt::round(-0.1), 0.0 ); - VERIFY_EQUAL( mpt::round(-0.5), -1.0 ); - VERIFY_EQUAL( mpt::round(-0.9), -1.0 ); - VERIFY_EQUAL( mpt::round(-1.4), -1.0 ); - VERIFY_EQUAL( mpt::round(-1.7), -2.0 ); - VERIFY_EQUAL( mpt::saturate_round(int32_max + 0.1), int32_max ); - VERIFY_EQUAL( mpt::saturate_round(int32_max - 0.4), int32_max ); - VERIFY_EQUAL( mpt::saturate_round(int32_min + 0.1), int32_min ); - VERIFY_EQUAL( mpt::saturate_round(int32_min - 0.1), int32_min ); - VERIFY_EQUAL( mpt::saturate_round(uint32_max + 0.499), uint32_max ); - VERIFY_EQUAL( mpt::saturate_round(110.1), 110 ); - VERIFY_EQUAL( mpt::saturate_round(-110.1), -110 ); - - VERIFY_EQUAL(mpt::popcount(static_cast(int32(-1))), 32); - VERIFY_EQUAL(mpt::popcount(0u), 0); - VERIFY_EQUAL(mpt::popcount(1u), 1); - VERIFY_EQUAL(mpt::popcount(2u), 1); - VERIFY_EQUAL(mpt::popcount(3u), 2); - - VERIFY_EQUAL(mpt::has_single_bit(0u), false); - VERIFY_EQUAL(mpt::has_single_bit(1u), true); - VERIFY_EQUAL(mpt::has_single_bit(2u), true); - VERIFY_EQUAL(mpt::has_single_bit(3u), false); - VERIFY_EQUAL(mpt::has_single_bit(4u), true); - VERIFY_EQUAL(mpt::has_single_bit(5u), false); - VERIFY_EQUAL(mpt::has_single_bit(6u), false); - VERIFY_EQUAL(mpt::has_single_bit(7u), false); - VERIFY_EQUAL(mpt::has_single_bit(8u), true); - VERIFY_EQUAL(mpt::has_single_bit(9u), false); - VERIFY_EQUAL(mpt::has_single_bit(uint32(0x7fffffffu)), false); - VERIFY_EQUAL(mpt::has_single_bit(uint32(0x80000000u)), true); - VERIFY_EQUAL(mpt::has_single_bit(uint32(0x80000001u)), false); - VERIFY_EQUAL(mpt::has_single_bit(uint32(0xfffffffeu)), false); - VERIFY_EQUAL(mpt::has_single_bit(uint32(0xffffffffu)), false); - - VERIFY_EQUAL(mpt::bit_ceil(0u), 1u); - VERIFY_EQUAL(mpt::bit_ceil(1u), 1u); - VERIFY_EQUAL(mpt::bit_ceil(2u), 2u); - VERIFY_EQUAL(mpt::bit_ceil(3u), 4u); - VERIFY_EQUAL(mpt::bit_ceil(4u), 4u); - VERIFY_EQUAL(mpt::bit_ceil(5u), 8u); - VERIFY_EQUAL(mpt::bit_ceil(6u), 8u); - VERIFY_EQUAL(mpt::bit_ceil(7u), 8u); - VERIFY_EQUAL(mpt::bit_ceil(8u), 8u); - VERIFY_EQUAL(mpt::bit_ceil(9u), 16u); - VERIFY_EQUAL(mpt::bit_ceil(uint32(0x7fffffffu)), 0x80000000u); - VERIFY_EQUAL(mpt::bit_ceil(uint32(0x80000000u)), 0x80000000u); - //VERIFY_EQUAL(mpt::bit_ceil(uint32(0x80000001u)), 0u); - //VERIFY_EQUAL(mpt::bit_ceil(uint32(0xfffffffeu)), 0u); - //VERIFY_EQUAL(mpt::bit_ceil(uint32(0xffffffffu)), 0u); - - VERIFY_EQUAL(mpt::bit_floor(0u), 0u); - VERIFY_EQUAL(mpt::bit_floor(1u), 1u); - VERIFY_EQUAL(mpt::bit_floor(2u), 2u); - VERIFY_EQUAL(mpt::bit_floor(3u), 2u); - VERIFY_EQUAL(mpt::bit_floor(4u), 4u); - VERIFY_EQUAL(mpt::bit_floor(5u), 4u); - VERIFY_EQUAL(mpt::bit_floor(6u), 4u); - VERIFY_EQUAL(mpt::bit_floor(7u), 4u); - VERIFY_EQUAL(mpt::bit_floor(8u), 8u); - VERIFY_EQUAL(mpt::bit_floor(9u), 8u); - VERIFY_EQUAL(mpt::bit_floor(uint32(0x7fffffffu)), 0x40000000u); - VERIFY_EQUAL(mpt::bit_floor(uint32(0x80000000u)), 0x80000000u); - VERIFY_EQUAL(mpt::bit_floor(uint32(0x80000001u)), 0x80000000u); - VERIFY_EQUAL(mpt::bit_floor(uint32(0xfffffffeu)), 0x80000000u); - VERIFY_EQUAL(mpt::bit_floor(uint32(0xffffffffu)), 0x80000000u); - - VERIFY_EQUAL(mpt::bit_width(0u), 0u); - VERIFY_EQUAL(mpt::bit_width(1u), 1u); - VERIFY_EQUAL(mpt::bit_width(2u), 2u); - VERIFY_EQUAL(mpt::bit_width(3u), 2u); - VERIFY_EQUAL(mpt::bit_width(4u), 3u); - VERIFY_EQUAL(mpt::bit_width(5u), 3u); - VERIFY_EQUAL(mpt::bit_width(6u), 3u); - VERIFY_EQUAL(mpt::bit_width(7u), 3u); - VERIFY_EQUAL(mpt::bit_width(8u), 4u); - VERIFY_EQUAL(mpt::bit_width(9u), 4u); - VERIFY_EQUAL(mpt::bit_width(uint32(0x7fffffffu)), 31u); - VERIFY_EQUAL(mpt::bit_width(uint32(0x80000000u)), 32u); - VERIFY_EQUAL(mpt::bit_width(uint32(0x80000001u)), 32u); - VERIFY_EQUAL(mpt::bit_width(uint32(0xfffffffeu)), 32u); - VERIFY_EQUAL(mpt::bit_width(uint32(0xffffffffu)), 32u); - - VERIFY_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00000001)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00000011)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00000111)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00001111)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00011111)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00111111)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b01111111)), 0); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11111111)), 8); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11111110)), 7); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11111100)), 6); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11111000)), 5); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11110000)), 4); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11100000)), 3); - VERIFY_EQUAL(mpt::countl_one(uint8(0b11000000)), 2); - VERIFY_EQUAL(mpt::countl_one(uint8(0b10000000)), 1); - VERIFY_EQUAL(mpt::countl_one(uint8(0b00000000)), 0); - - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00000001)), 7); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00000011)), 6); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00000111)), 5); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00001111)), 4); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00011111)), 3); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00111111)), 2); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b01111111)), 1); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11111111)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11111110)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11111100)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11111000)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11110000)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11100000)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b11000000)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b10000000)), 0); - VERIFY_EQUAL(mpt::countl_zero(uint8(0b00000000)), 8); - - VERIFY_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00000001)), 1); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00000011)), 2); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00000111)), 3); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00001111)), 4); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00011111)), 5); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00111111)), 6); - VERIFY_EQUAL(mpt::countr_one(uint8(0b01111111)), 7); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11111111)), 8); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11111110)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11111100)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11111000)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11110000)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11100000)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b11000000)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b10000000)), 0); - VERIFY_EQUAL(mpt::countr_one(uint8(0b00000000)), 0); - - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00000001)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00000011)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00000111)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00001111)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00011111)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00111111)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b01111111)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11111111)), 0); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11111110)), 1); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11111100)), 2); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11111000)), 3); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11110000)), 4); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11100000)), 5); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b11000000)), 6); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b10000000)), 7); - VERIFY_EQUAL(mpt::countr_zero(uint8(0b00000000)), 8); - - // trivials - VERIFY_EQUAL( mpt::saturate_cast(-1), -1 ); - VERIFY_EQUAL( mpt::saturate_cast(0), 0 ); - VERIFY_EQUAL( mpt::saturate_cast(1), 1 ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max() ); - - // signed / unsigned - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), (int32)std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), (int64)std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), std::numeric_limits::max() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), (uint32)std::numeric_limits::max() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min()), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max()), (uint64)std::numeric_limits::max() ); - - // overflow - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max() + 1), std::numeric_limits::max() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max() + int64(1)), std::numeric_limits::max() ); - - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min() - 1), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max() + 1), (uint16)std::numeric_limits::max() + 1 ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::min() - int64(1)), std::numeric_limits::min() ); - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max() + int64(1)), (uint32)std::numeric_limits::max() + 1 ); - - VERIFY_EQUAL( mpt::saturate_cast( int16(32000) ), 127 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(-32000) ), -128 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(32000) ), 127 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(64000) ), 127 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(32000) ), 255 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(-32000) ), 0 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(32000) ), 255 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(64000) ), 255 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(-32000) ), -32000 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(64000) ), 32767 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(-32000) ), 0 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(64000) ), 64000 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(-32000) ), -32000 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(64000) ), 64000 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( int16(-32000) ), 0 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(32000) ), 32000 ); - VERIFY_EQUAL( mpt::saturate_cast( uint16(64000) ), 64000 ); - - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max() ); - - VERIFY_EQUAL( mpt::saturate_cast(std::numeric_limits::max() - 1), std::numeric_limits::max() ); - - VERIFY_EQUAL( mpt::saturate_cast(static_cast(std::numeric_limits::max())), std::numeric_limits::max() ); - - VERIFY_EQUAL(mpt::rshift_signed(-32768, 1), mpt::rshift_signed_standard(-32768, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-32767, 1), mpt::rshift_signed_standard(-32767, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-32766, 1), mpt::rshift_signed_standard(-32766, 1)); - VERIFY_EQUAL(mpt::rshift_signed( -2, 1), mpt::rshift_signed_standard( -2, 1)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 1), mpt::rshift_signed_standard( -1, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 1), mpt::rshift_signed_standard( 0, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 1), mpt::rshift_signed_standard( 1, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 2, 1), mpt::rshift_signed_standard( 2, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 32766, 1), mpt::rshift_signed_standard( 32766, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 32767, 1), mpt::rshift_signed_standard( 32767, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-32768, 14), mpt::rshift_signed_standard(-32768, 14)); - VERIFY_EQUAL(mpt::rshift_signed(-32767, 14), mpt::rshift_signed_standard(-32767, 14)); - VERIFY_EQUAL(mpt::rshift_signed(-32766, 14), mpt::rshift_signed_standard(-32766, 14)); - VERIFY_EQUAL(mpt::rshift_signed( -2, 14), mpt::rshift_signed_standard( -2, 14)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 14), mpt::rshift_signed_standard( -1, 14)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 14), mpt::rshift_signed_standard( 0, 14)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 14), mpt::rshift_signed_standard( 1, 14)); - VERIFY_EQUAL(mpt::rshift_signed( 2, 14), mpt::rshift_signed_standard( 2, 14)); - VERIFY_EQUAL(mpt::rshift_signed( 32766, 14), mpt::rshift_signed_standard( 32766, 14)); - VERIFY_EQUAL(mpt::rshift_signed( 32767, 14), mpt::rshift_signed_standard( 32767, 14)); - VERIFY_EQUAL(mpt::rshift_signed(-32768, 15), mpt::rshift_signed_standard(-32768, 15)); - VERIFY_EQUAL(mpt::rshift_signed(-32767, 15), mpt::rshift_signed_standard(-32767, 15)); - VERIFY_EQUAL(mpt::rshift_signed(-32766, 15), mpt::rshift_signed_standard(-32766, 15)); - VERIFY_EQUAL(mpt::rshift_signed( -2, 15), mpt::rshift_signed_standard( -2, 15)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 15), mpt::rshift_signed_standard( -1, 15)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 15), mpt::rshift_signed_standard( 0, 15)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 15), mpt::rshift_signed_standard( 1, 15)); - VERIFY_EQUAL(mpt::rshift_signed( 2, 15), mpt::rshift_signed_standard( 2, 15)); - VERIFY_EQUAL(mpt::rshift_signed( 32766, 15), mpt::rshift_signed_standard( 32766, 15)); - VERIFY_EQUAL(mpt::rshift_signed( 32767, 15), mpt::rshift_signed_standard( 32767, 15)); - - VERIFY_EQUAL(mpt::lshift_signed(-32768, 1), mpt::lshift_signed_standard(-32768, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-32767, 1), mpt::lshift_signed_standard(-32767, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-32766, 1), mpt::lshift_signed_standard(-32766, 1)); - VERIFY_EQUAL(mpt::lshift_signed( -2, 1), mpt::lshift_signed_standard( -2, 1)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 1), mpt::lshift_signed_standard( -1, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 1), mpt::lshift_signed_standard( 0, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 1), mpt::lshift_signed_standard( 1, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 2, 1), mpt::lshift_signed_standard( 2, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 32766, 1), mpt::lshift_signed_standard( 32766, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 32767, 1), mpt::lshift_signed_standard( 32767, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-32768, 14), mpt::lshift_signed_standard(-32768, 14)); - VERIFY_EQUAL(mpt::lshift_signed(-32767, 14), mpt::lshift_signed_standard(-32767, 14)); - VERIFY_EQUAL(mpt::lshift_signed(-32766, 14), mpt::lshift_signed_standard(-32766, 14)); - VERIFY_EQUAL(mpt::lshift_signed( -2, 14), mpt::lshift_signed_standard( -2, 14)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 14), mpt::lshift_signed_standard( -1, 14)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 14), mpt::lshift_signed_standard( 0, 14)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 14), mpt::lshift_signed_standard( 1, 14)); - VERIFY_EQUAL(mpt::lshift_signed( 2, 14), mpt::lshift_signed_standard( 2, 14)); - VERIFY_EQUAL(mpt::lshift_signed( 32766, 14), mpt::lshift_signed_standard( 32766, 14)); - VERIFY_EQUAL(mpt::lshift_signed( 32767, 14), mpt::lshift_signed_standard( 32767, 14)); - VERIFY_EQUAL(mpt::lshift_signed(-32768, 15), mpt::lshift_signed_standard(-32768, 15)); - VERIFY_EQUAL(mpt::lshift_signed(-32767, 15), mpt::lshift_signed_standard(-32767, 15)); - VERIFY_EQUAL(mpt::lshift_signed(-32766, 15), mpt::lshift_signed_standard(-32766, 15)); - VERIFY_EQUAL(mpt::lshift_signed( -2, 15), mpt::lshift_signed_standard( -2, 15)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 15), mpt::lshift_signed_standard( -1, 15)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 15), mpt::lshift_signed_standard( 0, 15)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 15), mpt::lshift_signed_standard( 1, 15)); - VERIFY_EQUAL(mpt::lshift_signed( 2, 15), mpt::lshift_signed_standard( 2, 15)); - VERIFY_EQUAL(mpt::lshift_signed( 32766, 15), mpt::lshift_signed_standard( 32766, 15)); - VERIFY_EQUAL(mpt::lshift_signed( 32767, 15), mpt::lshift_signed_standard( 32767, 15)); - -#if MPT_COMPILER_SHIFT_SIGNED - - VERIFY_EQUAL(mpt::rshift_signed(-32768, 1), (-32768) >> 1); - VERIFY_EQUAL(mpt::rshift_signed(-32767, 1), (-32767) >> 1); - VERIFY_EQUAL(mpt::rshift_signed(-32766, 1), (-32766) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( -2, 1), ( -2) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( -1, 1), ( -1) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( 0, 1), ( 0) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( 1, 1), ( 1) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( 2, 1), ( 2) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( 32766, 1), ( 32766) >> 1); - VERIFY_EQUAL(mpt::rshift_signed( 32767, 1), ( 32767) >> 1); - VERIFY_EQUAL(mpt::rshift_signed(-32768, 14), (-32768) >> 14); - VERIFY_EQUAL(mpt::rshift_signed(-32767, 14), (-32767) >> 14); - VERIFY_EQUAL(mpt::rshift_signed(-32766, 14), (-32766) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( -2, 14), ( -2) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( -1, 14), ( -1) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( 0, 14), ( 0) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( 1, 14), ( 1) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( 2, 14), ( 2) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( 32766, 14), ( 32766) >> 14); - VERIFY_EQUAL(mpt::rshift_signed( 32767, 14), ( 32767) >> 14); - VERIFY_EQUAL(mpt::rshift_signed(-32768, 15), (-32768) >> 15); - VERIFY_EQUAL(mpt::rshift_signed(-32767, 15), (-32767) >> 15); - VERIFY_EQUAL(mpt::rshift_signed(-32766, 15), (-32766) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( -2, 15), ( -2) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( -1, 15), ( -1) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( 0, 15), ( 0) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( 1, 15), ( 1) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( 2, 15), ( 2) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( 32766, 15), ( 32766) >> 15); - VERIFY_EQUAL(mpt::rshift_signed( 32767, 15), ( 32767) >> 15); - - VERIFY_EQUAL(mpt::lshift_signed(-32768, 1), (-32768) << 1); - VERIFY_EQUAL(mpt::lshift_signed(-32767, 1), (-32767) << 1); - VERIFY_EQUAL(mpt::lshift_signed(-32766, 1), (-32766) << 1); - VERIFY_EQUAL(mpt::lshift_signed( -2, 1), ( -2) << 1); - VERIFY_EQUAL(mpt::lshift_signed( -1, 1), ( -1) << 1); - VERIFY_EQUAL(mpt::lshift_signed( 0, 1), ( 0) << 1); - VERIFY_EQUAL(mpt::lshift_signed( 1, 1), ( 1) << 1); - VERIFY_EQUAL(mpt::lshift_signed( 2, 1), ( 2) << 1); - VERIFY_EQUAL(mpt::lshift_signed( 32766, 1), ( 32766) << 1); - VERIFY_EQUAL(mpt::lshift_signed( 32767, 1), ( 32767) << 1); - VERIFY_EQUAL(mpt::lshift_signed(-32768, 14), (-32768) << 14); - VERIFY_EQUAL(mpt::lshift_signed(-32767, 14), (-32767) << 14); - VERIFY_EQUAL(mpt::lshift_signed(-32766, 14), (-32766) << 14); - VERIFY_EQUAL(mpt::lshift_signed( -2, 14), ( -2) << 14); - VERIFY_EQUAL(mpt::lshift_signed( -1, 14), ( -1) << 14); - VERIFY_EQUAL(mpt::lshift_signed( 0, 14), ( 0) << 14); - VERIFY_EQUAL(mpt::lshift_signed( 1, 14), ( 1) << 14); - VERIFY_EQUAL(mpt::lshift_signed( 2, 14), ( 2) << 14); - VERIFY_EQUAL(mpt::lshift_signed( 32766, 14), ( 32766) << 14); - VERIFY_EQUAL(mpt::lshift_signed( 32767, 14), ( 32767) << 14); - VERIFY_EQUAL(mpt::lshift_signed(-32768, 15), (-32768) << 15); - VERIFY_EQUAL(mpt::lshift_signed(-32767, 15), (-32767) << 15); - VERIFY_EQUAL(mpt::lshift_signed(-32766, 15), (-32766) << 15); - VERIFY_EQUAL(mpt::lshift_signed( -2, 15), ( -2) << 15); - VERIFY_EQUAL(mpt::lshift_signed( -1, 15), ( -1) << 15); - VERIFY_EQUAL(mpt::lshift_signed( 0, 15), ( 0) << 15); - VERIFY_EQUAL(mpt::lshift_signed( 1, 15), ( 1) << 15); - VERIFY_EQUAL(mpt::lshift_signed( 2, 15), ( 2) << 15); - VERIFY_EQUAL(mpt::lshift_signed( 32766, 15), ( 32766) << 15); - VERIFY_EQUAL(mpt::lshift_signed( 32767, 15), ( 32767) << 15); - -#endif - - VERIFY_EQUAL(mpt::rshift_signed(0-0x80000000, 1), mpt::rshift_signed_standard(0-0x80000000, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_standard(-0x7fffffff, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_standard(-0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 1), mpt::rshift_signed_standard( -1, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 1), mpt::rshift_signed_standard( 0, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 1), mpt::rshift_signed_standard( 1, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffe, 1), mpt::rshift_signed_standard( 0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffff, 1), mpt::rshift_signed_standard( 0x7fffffff, 1)); - - VERIFY_EQUAL(mpt::rshift_signed(0-0x80000000, 31), mpt::rshift_signed_standard(0-0x80000000, 31)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_standard(-0x7fffffff, 31)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_standard(-0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 31), mpt::rshift_signed_standard( -1, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 31), mpt::rshift_signed_standard( 0, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 31), mpt::rshift_signed_standard( 1, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffe, 31), mpt::rshift_signed_standard( 0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffff, 31), mpt::rshift_signed_standard( 0x7fffffff, 31)); - - VERIFY_EQUAL(mpt::lshift_signed(0-0x80000000, 1), mpt::lshift_signed_standard(0-0x80000000, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_standard(-0x7fffffff, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_standard(-0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 1), mpt::lshift_signed_standard( -1, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 1), mpt::lshift_signed_standard( 0, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 1), mpt::lshift_signed_standard( 1, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffe, 1), mpt::lshift_signed_standard( 0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffff, 1), mpt::lshift_signed_standard( 0x7fffffff, 1)); - - VERIFY_EQUAL(mpt::lshift_signed(0-0x80000000, 31), mpt::lshift_signed_standard(0-0x80000000, 31)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_standard(-0x7fffffff, 31)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_standard(-0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 31), mpt::lshift_signed_standard( -1, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 31), mpt::lshift_signed_standard( 0, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 31), mpt::lshift_signed_standard( 1, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffe, 31), mpt::lshift_signed_standard( 0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffff, 31), mpt::lshift_signed_standard( 0x7fffffff, 31)); - -#if MPT_COMPILER_SHIFT_SIGNED - - VERIFY_EQUAL(mpt::rshift_signed(0-0x80000000, 1), mpt::rshift_signed_undefined(0-0x80000000, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffff, 1), mpt::rshift_signed_undefined(-0x7fffffff, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffe, 1), mpt::rshift_signed_undefined(-0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 1), mpt::rshift_signed_undefined( -1, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 1), mpt::rshift_signed_undefined( 0, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 1), mpt::rshift_signed_undefined( 1, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffe, 1), mpt::rshift_signed_undefined( 0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffff, 1), mpt::rshift_signed_undefined( 0x7fffffff, 1)); - - VERIFY_EQUAL(mpt::rshift_signed(0-0x80000000, 31), mpt::rshift_signed_undefined(0-0x80000000, 31)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffff, 31), mpt::rshift_signed_undefined(-0x7fffffff, 31)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffe, 31), mpt::rshift_signed_undefined(-0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::rshift_signed( -1, 31), mpt::rshift_signed_undefined( -1, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 0, 31), mpt::rshift_signed_undefined( 0, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 1, 31), mpt::rshift_signed_undefined( 1, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffe, 31), mpt::rshift_signed_undefined( 0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffff, 31), mpt::rshift_signed_undefined( 0x7fffffff, 31)); - - VERIFY_EQUAL(mpt::lshift_signed(0-0x80000000, 1), mpt::lshift_signed_undefined(0-0x80000000, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffff, 1), mpt::lshift_signed_undefined(-0x7fffffff, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffe, 1), mpt::lshift_signed_undefined(-0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 1), mpt::lshift_signed_undefined( -1, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 1), mpt::lshift_signed_undefined( 0, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 1), mpt::lshift_signed_undefined( 1, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffe, 1), mpt::lshift_signed_undefined( 0x7ffffffe, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffff, 1), mpt::lshift_signed_undefined( 0x7fffffff, 1)); - - VERIFY_EQUAL(mpt::lshift_signed(0-0x80000000, 31), mpt::lshift_signed_undefined(0-0x80000000, 31)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffff, 31), mpt::lshift_signed_undefined(-0x7fffffff, 31)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffe, 31), mpt::lshift_signed_undefined(-0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::lshift_signed( -1, 31), mpt::lshift_signed_undefined( -1, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 0, 31), mpt::lshift_signed_undefined( 0, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 1, 31), mpt::lshift_signed_undefined( 1, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffe, 31), mpt::lshift_signed_undefined( 0x7ffffffe, 31)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffff, 31), mpt::lshift_signed_undefined( 0x7fffffff, 31)); - -#endif - - VERIFY_EQUAL(mpt::rshift_signed(0ull-0x8000000000000000ull, 1), mpt::rshift_signed_standard(0ull-0x8000000000000000ull, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::rshift_signed( -1ll, 1), mpt::rshift_signed_standard( -1ll, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0ll, 1), mpt::rshift_signed_standard( 0ll, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 1ll, 1), mpt::rshift_signed_standard( 1ll, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffffffffffell, 1), mpt::rshift_signed_standard( 0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffffffffffffll, 1), mpt::rshift_signed_standard( 0x7fffffffffffffffll, 1)); - - VERIFY_EQUAL(mpt::rshift_signed(0ull-0x8000000000000000ull, 63), mpt::rshift_signed_standard(0ull-0x8000000000000000ull, 63)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_standard(-0x7fffffffffffffffll, 63)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_standard(-0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::rshift_signed( -1ll, 63), mpt::rshift_signed_standard( -1ll, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 0ll, 63), mpt::rshift_signed_standard( 0ll, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 1ll, 63), mpt::rshift_signed_standard( 1ll, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffffffffffell, 63), mpt::rshift_signed_standard( 0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffffffffffffll, 63), mpt::rshift_signed_standard( 0x7fffffffffffffffll, 63)); - - VERIFY_EQUAL(mpt::lshift_signed(0ull-0x8000000000000000ull, 1), mpt::lshift_signed_standard(0ull-0x8000000000000000ull, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::lshift_signed( -1ll, 1), mpt::lshift_signed_standard( -1ll, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0ll, 1), mpt::lshift_signed_standard( 0ll, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 1ll, 1), mpt::lshift_signed_standard( 1ll, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffffffffffell, 1), mpt::lshift_signed_standard( 0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffffffffffffll, 1), mpt::lshift_signed_standard( 0x7fffffffffffffffll, 1)); - - VERIFY_EQUAL(mpt::lshift_signed(0ull-0x8000000000000000ull, 63), mpt::lshift_signed_standard(0ull-0x8000000000000000ull, 63)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_standard(-0x7fffffffffffffffll, 63)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_standard(-0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::lshift_signed( -1ll, 63), mpt::lshift_signed_standard( -1ll, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 0ll, 63), mpt::lshift_signed_standard( 0ll, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 1ll, 63), mpt::lshift_signed_standard( 1ll, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffffffffffell, 63), mpt::lshift_signed_standard( 0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffffffffffffll, 63), mpt::lshift_signed_standard( 0x7fffffffffffffffll, 63)); - -#if MPT_COMPILER_SHIFT_SIGNED - - VERIFY_EQUAL(mpt::rshift_signed(0ull-0x8000000000000000ull, 1), mpt::rshift_signed_undefined(0ull-0x8000000000000000ull, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 1)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::rshift_signed( -1ll, 1), mpt::rshift_signed_undefined( -1ll, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0ll, 1), mpt::rshift_signed_undefined( 0ll, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 1ll, 1), mpt::rshift_signed_undefined( 1ll, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffffffffffell, 1), mpt::rshift_signed_undefined( 0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffffffffffffll, 1), mpt::rshift_signed_undefined( 0x7fffffffffffffffll, 1)); - - VERIFY_EQUAL(mpt::rshift_signed(0ull-0x8000000000000000ull, 63), mpt::rshift_signed_undefined(0ull-0x8000000000000000ull, 63)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined(-0x7fffffffffffffffll, 63)); - VERIFY_EQUAL(mpt::rshift_signed(-0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined(-0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::rshift_signed( -1ll, 63), mpt::rshift_signed_undefined( -1ll, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 0ll, 63), mpt::rshift_signed_undefined( 0ll, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 1ll, 63), mpt::rshift_signed_undefined( 1ll, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7ffffffffffffffell, 63), mpt::rshift_signed_undefined( 0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::rshift_signed( 0x7fffffffffffffffll, 63), mpt::rshift_signed_undefined( 0x7fffffffffffffffll, 63)); - - VERIFY_EQUAL(mpt::lshift_signed(0ull-0x8000000000000000ull, 1), mpt::lshift_signed_undefined(0ull-0x8000000000000000ull, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 1)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::lshift_signed( -1ll, 1), mpt::lshift_signed_undefined( -1ll, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0ll, 1), mpt::lshift_signed_undefined( 0ll, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 1ll, 1), mpt::lshift_signed_undefined( 1ll, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffffffffffell, 1), mpt::lshift_signed_undefined( 0x7ffffffffffffffell, 1)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffffffffffffll, 1), mpt::lshift_signed_undefined( 0x7fffffffffffffffll, 1)); - - VERIFY_EQUAL(mpt::lshift_signed(0ull-0x8000000000000000ull, 63), mpt::lshift_signed_undefined(0ull-0x8000000000000000ull, 63)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined(-0x7fffffffffffffffll, 63)); - VERIFY_EQUAL(mpt::lshift_signed(-0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined(-0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::lshift_signed( -1ll, 63), mpt::lshift_signed_undefined( -1ll, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 0ll, 63), mpt::lshift_signed_undefined( 0ll, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 1ll, 63), mpt::lshift_signed_undefined( 1ll, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7ffffffffffffffell, 63), mpt::lshift_signed_undefined( 0x7ffffffffffffffell, 63)); - VERIFY_EQUAL(mpt::lshift_signed( 0x7fffffffffffffffll, 63), mpt::lshift_signed_undefined( 0x7fffffffffffffffll, 63)); - -#endif - - - VERIFY_EQUAL(mpt::wrapping_modulo(-25, 12), 11); - VERIFY_EQUAL(mpt::wrapping_modulo(-24, 12), 0); - VERIFY_EQUAL(mpt::wrapping_modulo(-23, 12), 1); - VERIFY_EQUAL(mpt::wrapping_modulo(-8, 7), 6); - VERIFY_EQUAL(mpt::wrapping_modulo(-7, 7), 0); - VERIFY_EQUAL(mpt::wrapping_modulo(-6, 7), 1); - VERIFY_EQUAL(mpt::wrapping_modulo(-5, 7), 2); - VERIFY_EQUAL(mpt::wrapping_modulo(-4, 7), 3); - VERIFY_EQUAL(mpt::wrapping_modulo(-3, 7), 4); - VERIFY_EQUAL(mpt::wrapping_modulo(-2, 7), 5); - VERIFY_EQUAL(mpt::wrapping_modulo(-1, 7), 6); - VERIFY_EQUAL(mpt::wrapping_modulo(0, 12), 0); - VERIFY_EQUAL(mpt::wrapping_modulo(0, 7), 0); - VERIFY_EQUAL(mpt::wrapping_modulo(1, 7), 1); - VERIFY_EQUAL(mpt::wrapping_modulo(2, 7), 2); - VERIFY_EQUAL(mpt::wrapping_modulo(3, 7), 3); - VERIFY_EQUAL(mpt::wrapping_modulo(4, 7), 4); - VERIFY_EQUAL(mpt::wrapping_modulo(5, 7), 5); - VERIFY_EQUAL(mpt::wrapping_modulo(6, 7), 6); - VERIFY_EQUAL(mpt::wrapping_modulo(7, 7), 0); - VERIFY_EQUAL(mpt::wrapping_modulo(8, 7), 1); - VERIFY_EQUAL(mpt::wrapping_modulo(23, 12), 11); - VERIFY_EQUAL(mpt::wrapping_modulo(24, 12), 0); - VERIFY_EQUAL(mpt::wrapping_modulo(25, 12), 1); - VERIFY_EQUAL(mpt::wrapping_modulo(uint32(0x7fffffff), uint32(0x80000000)), uint32(0x7fffffff)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(0x7ffffffe), int32(0x7fffffff)), int32(0x7ffffffe)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(1)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(2)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(1)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), int32(2)), int32(1)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(1)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), int32(2)), int32(0)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7fffffff)), int32(0x7ffffffe)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , int32(0x7fffffff)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , int32(0x7fffffff)), int32(1)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffe)), int32(0x7ffffffc)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , int32(0x7ffffffe)), int32(0x7ffffffd)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , int32(0x7ffffffe)), int32(0)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), int32(0x7ffffffd)), int32(0x7ffffffa)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , int32(0x7ffffffd)), int32(0x7ffffffb)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , int32(0x7ffffffd)), int32(0x7ffffffc)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(0) , int32(0x7fffffff)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7fffffff)), int32(0x7ffffffe)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7fffffff)), int32(0x7ffffffd)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(0) , int32(0x7ffffffe)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-1), int32(0x7ffffffe)), int32(0x7ffffffd)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-2), int32(0x7ffffffe)), int32(0x7ffffffc)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(1)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(2)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(1)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff), uint32(2)), int32(1)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(1)), int32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe), uint32(2)), int32(0)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x40000001) , uint32(0xffffffff)), uint32(0xbffffffe)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x40000000) , uint32(0xffffffff)), uint32(0xbfffffff)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x3fffffff) , uint32(0xffffffff)), uint32(0xc0000000)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , uint32(0x80000000)), uint32(1)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , uint32(0x80000000)), uint32(2)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000001)), uint32(1)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , uint32(0x80000001)), uint32(2)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , uint32(0x80000001)), uint32(3)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x80000000)), uint32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , uint32(0x80000000)), uint32(1)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , uint32(0x80000000)), uint32(2)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7fffffff)), uint32(0x7ffffffe)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , uint32(0x7fffffff)), uint32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , uint32(0x7fffffff)), uint32(1)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffe)), uint32(0x7ffffffc)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , uint32(0x7ffffffe)), uint32(0x7ffffffd)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , uint32(0x7ffffffe)), uint32(0)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x80000000ll), uint32(0x7ffffffd)), uint32(0x7ffffffa)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7fffffff) , uint32(0x7ffffffd)), uint32(0x7ffffffb)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-0x7ffffffe) , uint32(0x7ffffffd)), uint32(0x7ffffffc)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(0) , uint32(0x7fffffff)), uint32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7fffffff)), uint32(0x7ffffffe)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7fffffff)), uint32(0x7ffffffd)); - - VERIFY_EQUAL(mpt::wrapping_modulo(int32(0) , uint32(0x7ffffffe)), uint32(0)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-1), uint32(0x7ffffffe)), uint32(0x7ffffffd)); - VERIFY_EQUAL(mpt::wrapping_modulo(int32(-2), uint32(0x7ffffffe)), uint32(0x7ffffffc)); - - VERIFY_EQUAL(mpt::wrapping_divide(-15, 7), -3); - VERIFY_EQUAL(mpt::wrapping_divide(-14, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-13, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-12, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-11, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-10, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-9, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-8, 7), -2); - VERIFY_EQUAL(mpt::wrapping_divide(-7, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(-6, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(-5, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(-4, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(-3, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(-2, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(-1, 7), -1); - VERIFY_EQUAL(mpt::wrapping_divide(0, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(1, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(2, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(3, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(4, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(5, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(6, 7), 0); - VERIFY_EQUAL(mpt::wrapping_divide(7, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(8, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(9, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(10, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(11, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(12, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(13, 7), 1); - VERIFY_EQUAL(mpt::wrapping_divide(14, 7), 2); - VERIFY_EQUAL(mpt::wrapping_divide(15, 7), 2); - } @@ -1645,76 +855,6 @@ VERIFY_EQUAL( mpt::String::RTrim(std::string("\0\ta\0b ",6)), std::string("\0\ta\0b",5) ); VERIFY_EQUAL( mpt::String::Trim(std::string("\0\ta\0b\0",6),std::string("\0",1)), std::string("\ta\0b",4) ); - { - std::string expecteds = std::string("pleasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(Util::BinToBase64(mpt::as_span(expected)), U_("cGxlYXN1cmUu")); - } - { - std::string expecteds = std::string("leasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(Util::BinToBase64(mpt::as_span(expected)), U_("bGVhc3VyZS4=")); - } - { - std::string expecteds = std::string("easure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(Util::BinToBase64(mpt::as_span(expected)), U_("ZWFzdXJlLg==")); - } - { - std::string expecteds = std::string("pleasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(expected, Util::Base64ToBin(U_("cGxlYXN1cmUu"))); - } - { - std::string expecteds = std::string("leasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(expected, Util::Base64ToBin(U_("bGVhc3VyZS4="))); - } - { - std::string expecteds = std::string("easure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(expected, Util::Base64ToBin(U_("ZWFzdXJlLg=="))); - } - - { - std::string expecteds = std::string("pleasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(Util::BinToBase64url(mpt::as_span(expected)), U_("cGxlYXN1cmUu")); - } - { - std::string expecteds = std::string("leasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(Util::BinToBase64url(mpt::as_span(expected)), U_("bGVhc3VyZS4")); - } - { - std::string expecteds = std::string("easure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(Util::BinToBase64url(mpt::as_span(expected)), U_("ZWFzdXJlLg")); - } - { - std::string expecteds = std::string("pleasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(expected, Util::Base64urlToBin(U_("cGxlYXN1cmUu"))); - } - { - std::string expecteds = std::string("leasure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(expected, Util::Base64urlToBin(U_("bGVhc3VyZS4"))); - } - { - std::string expecteds = std::string("easure."); - std::vector expected(mpt::byte_cast(mpt::as_span(expecteds)).data(), mpt::byte_cast(mpt::as_span(expecteds)).data() + mpt::byte_cast(mpt::as_span(expecteds)).size()); - VERIFY_EQUAL(expected, Util::Base64urlToBin(U_("ZWFzdXJlLg"))); - } - - // These should fail to compile - //mpt::saturate_round(1.0); - //mpt::saturate_round(1.0); - //mpt::saturate_round(1.0); - - // This should trigger assert in Round. - //VERIFY_EQUAL( mpt::saturate_round(-129), 0 ); - // Check for completeness of supported effect list in mod specifications for(const auto &spec : ModSpecs::Collection) { @@ -1722,65 +862,6 @@ VERIFY_EQUAL(strlen(spec->volcommands), (size_t)MAX_VOLCMDS); } - // UUID - { - VERIFY_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull).ToUString(), U_("2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32")); - #if defined(MODPLUG_TRACKER) || defined(MPT_WITH_DMO) - constexpr mpt::UUID uuid_tmp = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; - VERIFY_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid_tmp); - VERIFY_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(Util::StringToGUID(_T("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); - VERIFY_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), mpt::UUID(Util::StringToCLSID(_T("{2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32}")))); - VERIFY_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull), mpt::UUID(Util::StringToGUID(_T("{00112233-4455-6677-8899-AABBCCDDEEFF}")))); - VERIFY_EQUAL(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull), mpt::UUID(Util::StringToGUID(_T("{00112233-4455-6677-C899-AABBCCDDEEFF}")))); - VERIFY_EQUAL(Util::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0x8899AABBCCDDEEFFull)), _T("{00112233-4455-6677-8899-AABBCCDDEEFF}")); - VERIFY_EQUAL(Util::GUIDToString(mpt::UUID(0x00112233u, 0x4455, 0x6677, 0xC899AABBCCDDEEFFull)), _T("{00112233-4455-6677-C899-AABBCCDDEEFF}")); - #endif - -#if defined(MODPLUG_TRACKER) || defined(MPT_WITH_DMO) - VERIFY_EQUAL(Util::IsValid(Util::CreateGUID()), true); - { - mpt::UUID uuid = mpt::UUID::Generate(); - VERIFY_EQUAL(uuid, mpt::UUID::FromString(mpt::UUID(uuid).ToUString())); - VERIFY_EQUAL(uuid, mpt::UUID(Util::StringToGUID(Util::GUIDToString(uuid)))); - VERIFY_EQUAL(uuid, mpt::UUID(Util::StringToIID(Util::IIDToString(uuid)))); - VERIFY_EQUAL(uuid, mpt::UUID(Util::StringToCLSID(Util::CLSIDToString(uuid)))); - } - { - GUID guid = mpt::UUID::Generate(); - VERIFY_EQUAL(IsEqualGUID(guid, static_cast(mpt::UUID::FromString(mpt::UUID(guid).ToUString()))), TRUE); - VERIFY_EQUAL(IsEqualGUID(guid, Util::StringToGUID(Util::GUIDToString(guid))), TRUE); - VERIFY_EQUAL(IsEqualGUID(guid, Util::StringToIID(Util::IIDToString(guid))), TRUE); - VERIFY_EQUAL(IsEqualGUID(guid, Util::StringToCLSID(Util::CLSIDToString(guid))), TRUE); - } -#endif - VERIFY_EQUAL(mpt::UUID::Generate().IsValid(), true); - VERIFY_EQUAL(mpt::UUID::GenerateLocalUseOnly().IsValid(), true); - VERIFY_EQUAL(mpt::UUID::Generate() != mpt::UUID::Generate(), true); - mpt::UUID a = mpt::UUID::Generate(); - VERIFY_EQUAL(a, mpt::UUID::FromString(a.ToUString())); - std::byte uuiddata[16]{}; - for(std::size_t i = 0; i < 16; ++i) - { - uuiddata[i] = mpt::byte_cast(static_cast(i)); - } - static_assert(sizeof(mpt::UUID) == 16); - UUIDbin uuid2; - std::memcpy(&uuid2, uuiddata, 16); - VERIFY_EQUAL(mpt::UUID(uuid2).ToUString(), U_("00010203-0405-0607-0809-0a0b0c0d0e0f")); - } - - constexpr mpt::UUID uuid3 = "2ed6593a-dfe6-4cf8-b2e5-75ad7f600c32"_uuid; - VERIFY_EQUAL(mpt::UUID(0x2ed6593au, 0xdfe6, 0x4cf8, 0xb2e575ad7f600c32ull), uuid3); - -#if defined(MODPLUG_TRACKER) - { - constexpr mpt::UUID uuid_ns_dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"_uuid; - constexpr mpt::UUID expected = "74738ff5-5367-5958-9aee-98fffdcd1876"_uuid; - mpt::UUID gotten = mpt::UUIDRFC4122NamespaceV5(uuid_ns_dns, U_("www.example.org")); - VERIFY_EQUAL(gotten, expected); - } -#endif - // check that empty stringstream behaves correctly with our MSVC workarounds when using iostream interface directly { std::ostringstream ss; VERIFY_EQUAL(ss.tellp(), std::streampos(0)); } @@ -2227,8 +1308,6 @@ #ifdef MPT_WITH_MINIZ VERIFY_EQUAL(mz_crc32(0, mpt::byte_cast(std::string("123456789").c_str()), 9), 0xCBF43926u); #endif - VERIFY_EQUAL(mpt::crc32(std::string("123456789")), 0xCBF43926u); - VERIFY_EQUAL(mpt::crc32_ogg(std::string("123456789")), 0x89a1897fu); // Check floating-point accuracy in TransposeToFrequency static constexpr int32 transposeToFrequency[] = @@ -2515,51 +1594,10 @@ static MPT_NOINLINE void TestRandom() { - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0xffffffffu), 32); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0xfffffffeu), 31); + #ifdef FLAKY_TESTS - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x80000000u), 31); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x7fffffffu), 31); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x7ffffffeu), 30); + mpt::default_prng& prng = *s_PRNG; - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000007u), 3); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000006u), 2); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000005u), 2); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000004u), 2); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000003u), 2); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000002u), 1); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000001u), 1); - VERIFY_EQUAL(mpt::detail::lower_bound_entropy_bits(0x00000000u), 0); - - mpt::default_prng & prng = *s_PRNG; - for(std::size_t i = 0; i < 10000; ++i) - { - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0u, 127u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0u, 255u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0u, 511u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0u, 1u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 7), 0u, 127u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 8), 0u, 255u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 9), 0u, 511u), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 1), 0u, 1u), true); - - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0, 127), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0, 255), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0, 511), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng), 0, 1), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 7), 0, 127), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 8), 0, 255), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 9), 0, 511), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 1), 0, 1), true); - - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 0.0f, 1.0f), 0.0f, 1.0f), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 0.0, 1.0), 0.0, 1.0), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, -1.0, 1.0), -1.0, 1.0), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, -1.0, 0.0), -1.0, 0.0), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 1.0, 2.0), 1.0, 2.0), true); - VERIFY_EQUAL_QUIET_NONCONT(IsInRange(mpt::random(prng, 1.0, 3.0), 1.0, 3.0), true); - } - #ifdef FLAKY_TESTS { std::vector hist(256); for(std::size_t i = 0; i < 256*256; ++i) @@ -2609,245 +1647,6 @@ static MPT_NOINLINE void TestCharsets() { - // MPT_UTF8 version - - // Charset conversions (basic sanity checks) - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8, U_("a")), "a"); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ISO8859_1, U_("a")), "a"); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ASCII, U_("a")), "a"); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::UTF8, "a"), U_("a")); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::ISO8859_1, "a"), U_("a")); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::ASCII, "a"), U_("a")); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::Locale, U_("a")), "a"); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::Locale, "a"), U_("a")); -#endif - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8, MPT_UTF8("a")), "a"); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ISO8859_1, MPT_UTF8("a")), "a"); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ASCII, MPT_UTF8("a")), "a"); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::UTF8, "a"), MPT_UTF8("a")); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::ISO8859_1, "a"), MPT_UTF8("a")); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::ASCII, "a"), MPT_UTF8("a")); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::Locale, MPT_UTF8("a")), "a"); - VERIFY_EQUAL(mpt::ToUnicode(mpt::Charset::Locale, "a"), MPT_UTF8("a")); -#endif - -#if MPT_OS_EMSCRIPTEN - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::Locale, MPT_UTF8("\xe2\x8c\x82")), "\xe2\x8c\x82"); -#endif // MPT_OS_EMSCRIPTEN - - // Check that some character replacement is done (and not just empty strings or truncated strings are returned) - // We test german umlaut-a (U+00E4) (\xC3\xA4) and CJK U+5BB6 (\xE5\xAE\xB6) - - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ASCII,MPT_UTF8("abc\xC3\xA4xyz")),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,MPT_UTF8("abc\xC3\xA4xyz")),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::CP437,MPT_UTF8("abc\xC3\xA4xyz")),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::UTF8,MPT_UTF8("abc\xC3\xA4xyz")),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ASCII,MPT_UTF8("abc\xC3\xA4xyz")),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,MPT_UTF8("abc\xC3\xA4xyz")),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::CP437,MPT_UTF8("abc\xC3\xA4xyz")),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::UTF8,MPT_UTF8("abc\xC3\xA4xyz")),"abc"),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::Locale,MPT_UTF8("abc\xC3\xA4xyz")),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::Locale,MPT_UTF8("abc\xC3\xA4xyz")),"abc"),true); -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ASCII,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::CP437,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::UTF8,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ASCII,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::CP437,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::UTF8,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"abc"),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::Locale,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::Locale,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"abc"),true); -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::ASCII,"abc\xC3\xA4xyz"),U_("xyz")),true); - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::ISO8859_1,"abc\xC3\xA4xyz"),U_("xyz")),true); - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::CP437,"abc\xC3\xA4xyz"),U_("xyz")),true); - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::UTF8,"abc\xC3\xA4xyz"),U_("xyz")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::ASCII,"abc\xC3\xA4xyz"),U_("abc")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::ISO8859_1,"abc\xC3\xA4xyz"),U_("abc")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::CP437,"abc\xC3\xA4xyz"),U_("abc")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::UTF8,"abc\xC3\xA4xyz"),U_("abc")),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::Locale,"abc\xC3\xA4xyz"),U_("xyz")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::Locale,"abc\xC3\xA4xyz"),U_("abc")),true); -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::ASCII,"abc\xE5\xAE\xB6xyz"),U_("xyz")),true); - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::ISO8859_1,"abc\xE5\xAE\xB6xyz"),U_("xyz")),true); - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::CP437,"abc\xE5\xAE\xB6xyz"),U_("xyz")),true); - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::UTF8,"abc\xE5\xAE\xB6xyz"),U_("xyz")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::ASCII,"abc\xE5\xAE\xB6xyz"),U_("abc")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::ISO8859_1,"abc\xE5\xAE\xB6xyz"),U_("abc")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::CP437,"abc\xE5\xAE\xB6xyz"),U_("abc")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::UTF8,"abc\xE5\xAE\xB6xyz"),U_("abc")),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToUnicode(mpt::Charset::Locale,"abc\xE5\xAE\xB6xyz"),U_("xyz")),true); - VERIFY_EQUAL(BeginsWith(mpt::ToUnicode(mpt::Charset::Locale,"abc\xE5\xAE\xB6xyz"),U_("abc")),true); -#endif - - // Check that characters are correctly converted - // We test german umlaut-a (U+00E4) and CJK U+5BB6 - - // cp437 - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::CP437,MPT_UTF8("abc\xC3\xA4xyz")),"abc\x84xyz"); - VERIFY_EQUAL(MPT_UTF8("abc\xC3\xA4xyz"),mpt::ToUnicode(mpt::Charset::CP437,"abc\x84xyz")); - - // iso8859 - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ISO8859_1,MPT_UTF8("abc\xC3\xA4xyz")),"abc\xE4xyz"); - VERIFY_EQUAL(MPT_UTF8("abc\xC3\xA4xyz"),mpt::ToUnicode(mpt::Charset::ISO8859_1,"abc\xE4xyz")); - - // utf8 - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8,MPT_UTF8("abc\xC3\xA4xyz")),"abc\xC3\xA4xyz"); - VERIFY_EQUAL(MPT_UTF8("abc\xC3\xA4xyz"),mpt::ToUnicode(mpt::Charset::UTF8,"abc\xC3\xA4xyz")); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8,MPT_UTF8("abc\xE5\xAE\xB6xyz")),"abc\xE5\xAE\xB6xyz"); - VERIFY_EQUAL(MPT_UTF8("abc\xE5\xAE\xB6xyz"),mpt::ToUnicode(mpt::Charset::UTF8,"abc\xE5\xAE\xB6xyz")); - - -#if MPT_WSTRING_CONVERT - - // wide L"" version - - // Charset conversions (basic sanity checks) - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8, L"a"), "a"); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ISO8859_1, L"a"), "a"); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ASCII, L"a"), "a"); - VERIFY_EQUAL(mpt::ToWide(mpt::Charset::UTF8, "a"), L"a"); - VERIFY_EQUAL(mpt::ToWide(mpt::Charset::ISO8859_1, "a"), L"a"); - VERIFY_EQUAL(mpt::ToWide(mpt::Charset::ASCII, "a"), L"a"); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::Locale, L"a"), "a"); - VERIFY_EQUAL(mpt::ToWide(mpt::Charset::Locale, "a"), L"a"); -#endif - - // Check that some character replacement is done (and not just empty strings or truncated strings are returned) - // We test german umlaut-a (U+00E4) and CJK U+5BB6 - -#if MPT_COMPILER_MSVC -#pragma warning(push) -#pragma warning(disable:4428) // universal-character-name encountered in source -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ASCII,L"abc\u00E4xyz"),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,L"abc\u00E4xyz"),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::CP437,L"abc\u00E4xyz"),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::UTF8,L"abc\u00E4xyz"),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ASCII,L"abc\u00E4xyz"),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,L"abc\u00E4xyz"),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::CP437,L"abc\u00E4xyz"),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::UTF8,L"abc\u00E4xyz"),"abc"),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::Locale,L"abc\u00E4xyz"),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::Locale,L"abc\u00E4xyz"),"abc"),true); -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ASCII,L"abc\u5BB6xyz"),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,L"abc\u5BB6xyz"),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::CP437,L"abc\u5BB6xyz"),"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::UTF8,L"abc\u5BB6xyz"),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ASCII,L"abc\u5BB6xyz"),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::ISO8859_1,L"abc\u5BB6xyz"),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::CP437,L"abc\u5BB6xyz"),"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::UTF8,L"abc\u5BB6xyz"),"abc"),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToCharset(mpt::Charset::Locale,L"abc\u5BB6xyz"),"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToCharset(mpt::Charset::Locale,L"abc\u5BB6xyz"),"abc"),true); -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::ASCII,"abc\xC3\xA4xyz"),L"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::ISO8859_1,"abc\xC3\xA4xyz"),L"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::CP437,"abc\xC3\xA4xyz"),L"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::UTF8,"abc\xC3\xA4xyz"),L"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::ASCII,"abc\xC3\xA4xyz"),L"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::ISO8859_1,"abc\xC3\xA4xyz"),L"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::CP437,"abc\xC3\xA4xyz"),L"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::UTF8,"abc\xC3\xA4xyz"),L"abc"),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::Locale,"abc\xC3\xA4xyz"),L"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::Locale,"abc\xC3\xA4xyz"),L"abc"),true); -#endif - - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::ASCII,"abc\xE5\xAE\xB6xyz"),L"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::ISO8859_1,"abc\xE5\xAE\xB6xyz"),L"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::CP437,"abc\xE5\xAE\xB6xyz"),L"xyz"),true); - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::UTF8,"abc\xE5\xAE\xB6xyz"),L"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::ASCII,"abc\xE5\xAE\xB6xyz"),L"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::ISO8859_1,"abc\xE5\xAE\xB6xyz"),L"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::CP437,"abc\xE5\xAE\xB6xyz"),L"abc"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::UTF8,"abc\xE5\xAE\xB6xyz"),L"abc"),true); -#if defined(MPT_ENABLE_CHARSET_LOCALE) - VERIFY_EQUAL(EndsWith(mpt::ToWide(mpt::Charset::Locale,"abc\xE5\xAE\xB6xyz"),L"xyz"),true); - VERIFY_EQUAL(BeginsWith(mpt::ToWide(mpt::Charset::Locale,"abc\xE5\xAE\xB6xyz"),L"abc"),true); -#endif - - // Check that characters are correctly converted - // We test german umlaut-a (U+00E4) and CJK U+5BB6 - - // cp437 - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::CP437,L"abc\u00E4xyz"),"abc\x84xyz"); - VERIFY_EQUAL(L"abc\u00E4xyz",mpt::ToWide(mpt::Charset::CP437,"abc\x84xyz")); - - // iso8859 - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::ISO8859_1,L"abc\u00E4xyz"),"abc\xE4xyz"); - VERIFY_EQUAL(L"abc\u00E4xyz",mpt::ToWide(mpt::Charset::ISO8859_1,"abc\xE4xyz")); - - // utf8 - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8,L"abc\u00E4xyz"),"abc\xC3\xA4xyz"); - VERIFY_EQUAL(L"abc\u00E4xyz",mpt::ToWide(mpt::Charset::UTF8,"abc\xC3\xA4xyz")); - VERIFY_EQUAL(mpt::ToCharset(mpt::Charset::UTF8,L"abc\u5BB6xyz"),"abc\xE5\xAE\xB6xyz"); - VERIFY_EQUAL(L"abc\u5BB6xyz",mpt::ToWide(mpt::Charset::UTF8,"abc\xE5\xAE\xB6xyz")); - -#if MPT_COMPILER_MSVC -#pragma warning(pop) -#endif - -#endif - - { - char buf[4] = { 'x','x','x','x' }; - mpt::String::WriteAutoBuf(buf) = std::string("foobar"); - VERIFY_EQUAL(buf[0], 'f'); - VERIFY_EQUAL(buf[1], 'o'); - VERIFY_EQUAL(buf[2], 'o'); - VERIFY_EQUAL(buf[3], '\0'); - } - { - char buf[4] = { 'x','x','x','x' }; - char foobar[] = {'f','o','o','b','a','r','\0'}; - mpt::String::WriteTypedBuf(buf) = (char*)foobar; - VERIFY_EQUAL(buf[0], 'f'); - VERIFY_EQUAL(buf[1], 'o'); - VERIFY_EQUAL(buf[2], 'o'); - VERIFY_EQUAL(buf[3], '\0'); - } - { - char buf[4] = { 'x','x','x','x' }; - mpt::String::WriteTypedBuf(buf) = (const char*)"foobar"; - VERIFY_EQUAL(buf[0], 'f'); - VERIFY_EQUAL(buf[1], 'o'); - VERIFY_EQUAL(buf[2], 'o'); - VERIFY_EQUAL(buf[3], '\0'); - } - { - char buf[4] = { 'x','x','x','x' }; - mpt::String::WriteTypedBuf(buf) = "foobar"; - VERIFY_EQUAL(buf[0], 'f'); - VERIFY_EQUAL(buf[1], 'o'); - VERIFY_EQUAL(buf[2], 'o'); - VERIFY_EQUAL(buf[3], '\0'); - } - { - const char buf[4] = { 'f','o','o','b' }; - std::string foo = mpt::String::ReadAutoBuf(buf); - VERIFY_EQUAL(foo, std::string("foob")); - } - // Path splitting #if MPT_OS_WINDOWS && defined(MPT_ENABLE_DYNBIND) @@ -3116,7 +1915,6 @@ #endif #endif - VERIFY_EQUAL(mpt::CompareNoCaseAscii("f", "f", 6) == 0, true); VERIFY_EQUAL(mpt::CompareNoCaseAscii("f", "F", 6) == 0, true); VERIFY_EQUAL(mpt::CompareNoCaseAscii("F", "f", 6) == 0, true); @@ -3138,7 +1936,6 @@ VERIFY_EQUAL(mpt::CompareNoCaseAscii("FIH", "fghi", 1) == 0, true); VERIFY_EQUAL(mpt::CompareNoCaseAscii("FIH", "fghi", 2) > 0, true); - } @@ -3179,63 +1976,6 @@ #endif // MODPLUG_TRACKER -static MPT_NOINLINE void TestCrypto() -{ - -#ifdef MODPLUG_TRACKER - - mpt::crypto::hash::SHA512::result_type sha512_abc{ - std::byte{0xdd},std::byte{0xaf},std::byte{0x35},std::byte{0xa1},std::byte{0x93},std::byte{0x61},std::byte{0x7a},std::byte{0xba}, - std::byte{0xcc},std::byte{0x41},std::byte{0x73},std::byte{0x49},std::byte{0xae},std::byte{0x20},std::byte{0x41},std::byte{0x31}, - std::byte{0x12},std::byte{0xe6},std::byte{0xfa},std::byte{0x4e},std::byte{0x89},std::byte{0xa9},std::byte{0x7e},std::byte{0xa2}, - std::byte{0x0a},std::byte{0x9e},std::byte{0xee},std::byte{0xe6},std::byte{0x4b},std::byte{0x55},std::byte{0xd3},std::byte{0x9a}, - std::byte{0x21},std::byte{0x92},std::byte{0x99},std::byte{0x2a},std::byte{0x27},std::byte{0x4f},std::byte{0xc1},std::byte{0xa8}, - std::byte{0x36},std::byte{0xba},std::byte{0x3c},std::byte{0x23},std::byte{0xa3},std::byte{0xfe},std::byte{0xeb},std::byte{0xbd}, - std::byte{0x45},std::byte{0x4d},std::byte{0x44},std::byte{0x23},std::byte{0x64},std::byte{0x3c},std::byte{0xe8},std::byte{0x0e}, - std::byte{0x2a},std::byte{0x9a},std::byte{0xc9},std::byte{0x4f},std::byte{0xa5},std::byte{0x4c},std::byte{0xa4},std::byte{0x9f} - }; - VERIFY_EQUAL(mpt::crypto::hash::SHA512().process(mpt::byte_cast(mpt::as_span(std::string("abc")))).result(), sha512_abc); - - { - - std::vector data = { std::byte{0x11}, std::byte{0x12}, std::byte{0x13}, std::byte{0x14} }; - - mpt::crypto::keystore keystore(mpt::crypto::keystore::domain::user); - - mpt::crypto::asymmetric::rsassa_pss<>::managed_private_key key(keystore, U_("OpenMPT Test Key 1")); - - auto publickeydata = key.get_public_key_data(); - - mpt::crypto::asymmetric::rsassa_pss<>::public_key pk{publickeydata}; - mpt::crypto::asymmetric::rsassa_pss<>::public_key pk_copy{pk}; - mpt::ustring jwk = publickeydata.as_jwk(); - - std::vector signature = key.sign(mpt::as_span(data)); - mpt::ustring jws = key.jws_sign(mpt::as_span(data)); - mpt::ustring jws_compact = key.jws_compact_sign(mpt::as_span(data)); - - try - { - pk.verify(mpt::as_span(data), signature); - auto verifieddata1 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_verify(jws); - auto verifieddata2 = mpt::crypto::asymmetric::rsassa_pss<>::public_key(mpt::crypto::asymmetric::rsassa_pss<>::public_key_data::from_jwk(jwk)).jws_compact_verify(jws_compact); - VERIFY_EQUAL(true, true); - VERIFY_EQUAL(data, verifieddata1); - VERIFY_EQUAL(data, verifieddata2); - } catch(const mpt::crypto::asymmetric::signature_verification_failed &) - { - VERIFY_EQUAL(true, false); - } - - key.destroy(); - - } - -#endif // MODPLUG_TRACKER - -} - - static MPT_NOINLINE void TestSettings() { @@ -4635,15 +3375,7 @@ #endif -static MPT_NOINLINE void TestTunings() -{ - // nothing for now - -} - - - static double Rand01() { return mpt::random(*s_PRNG, 0.0, 1.0); Index: test/TestToolsLib.cpp =================================================================== --- test/TestToolsLib.cpp (revision 14776) +++ test/TestToolsLib.cpp (working copy) @@ -28,6 +28,77 @@ namespace Test { + +void mpt_test_reporter::case_run(const mpt::source_location& loc) +{ + #if !MPT_OS_DJGPP + std::cout << "TEST..: " << MPT_FORMAT("{}({}):")(loc.file_name() ? loc.file_name() : "", loc.line()) << ": " << std::endl; + #endif +} + +void mpt_test_reporter::case_run(const mpt::source_location& loc, const char* text_e) +{ + #if !MPT_OS_DJGPP + std::cout << "TEST..: " << MPT_FORMAT("{}({}): {}")(loc.file_name() ? loc.file_name() : "", loc.line(), text_e) << ": " << std::endl; + #endif +} + +void mpt_test_reporter::case_run(const mpt::source_location& loc, const char* text_ex, const char* text_e) +{ + if(text_ex) + { + #if !MPT_OS_DJGPP + std::cout << "TEST..: " << MPT_FORMAT("{}({}): {} throws {}")(loc.file_name() ? loc.file_name() : "", loc.line(), text_e, text_ex) << ": " << std::endl; + #endif + } else + { + #if !MPT_OS_DJGPP + std::cout << "TEST..: " << MPT_FORMAT("{}({}): {} throws")(loc.file_name() ? loc.file_name() : "", loc.line(), text_e) << ": " << std::endl; + #endif + } +} + +void mpt_test_reporter::case_run(const mpt::source_location& loc, const char* text_a, const char* text_cmp, const char* text_b) +{ + #if !MPT_OS_DJGPP + std::cout << "TEST..: " << MPT_FORMAT("{}({}): {} {} {}")(loc.file_name() ? loc.file_name() : "", loc.line(), text_a, text_cmp, text_b) << ": " << std::endl; + #endif +} + +void mpt_test_reporter::case_result(const mpt::source_location& loc, const mpt::test::result& result) +{ + MPT_UNUSED(loc); + if(std::holds_alternative(result.info)) + { + #if !MPT_OS_DJGPP + std::cout << "RESULT: PASS" << std::endl; + #endif + } else if(std::holds_alternative(result.info)) + { + fail_count++; + std::cout << "RESULT: FAIL" << std::endl; + std::cout.flush(); + std::cerr << "FAIL: " << "FAILURE: " << std::get(result.info).text << std::endl; + std::cerr.flush(); + } else if(std::holds_alternative(result.info)) + { + fail_count++; + std::cout << "RESULT: FAIL" << std::endl; + std::cout.flush(); + std::cerr << "FAIL: " << "UNEXPECTED EXCEPTION: " << std::get(result.info).text << std::endl; + std::cerr.flush(); + } else + { + fail_count++; + std::cout << "RESULT: FAIL" << std::endl; + std::cout.flush(); + std::cerr << "FAIL: " << "UNKOWN" << std::endl; + std::cerr.flush(); + } +} + + + int fail_count = 0; Index: test/TestToolsLib.h =================================================================== --- test/TestToolsLib.h (revision 14776) +++ test/TestToolsLib.h (working copy) @@ -21,6 +21,8 @@ //#define MPT_TEST_CXX11 +#include "mpt/test/test.hpp" + #include #include "../common/Endianness.h" @@ -34,6 +36,23 @@ namespace Test { + +class mpt_test_reporter + : public mpt::test::silent_reporter +{ +public: + mpt_test_reporter() = default; + ~mpt_test_reporter() override = default; +public: + void case_run(const mpt::source_location & loc) override; + void case_run(const mpt::source_location & loc, const char * text_e) override; + void case_run(const mpt::source_location & loc, const char * text_ex, const char * text_e) override; + void case_run(const mpt::source_location & loc, const char * text_a, const char * text_cmp, const char * text_b) override; + void case_result(const mpt::source_location & loc, const mpt::test::result & result) override; +}; + + + extern int fail_count; Index: test/TestToolsTracker.h =================================================================== --- test/TestToolsTracker.h (revision 14776) +++ test/TestToolsTracker.h (working copy) @@ -18,9 +18,12 @@ #ifdef MODPLUG_TRACKER +#include "mpt/test/test.hpp" + + OPENMPT_NAMESPACE_BEGIN - + namespace Test { @@ -32,6 +35,19 @@ #endif +class mpt_test_reporter + : public mpt::test::silent_reporter +{ +public: + mpt_test_reporter() = default; + ~mpt_test_reporter() override = default; +public: + inline void immediate_breakpoint() override { + MyDebugBreak(); + } +}; + + // Verify that given parameters are 'equal'. Break directly into the debugger if not. // The exact meaning of equality is based on operator== of the compared types. #define VERIFY_EQUAL(x,y) \