Index: .clang-format =================================================================== --- .clang-format (revision 14777) +++ .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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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,9 +112,111 @@ 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 MPT_FILES_COMMON += common/ComponentManager.cpp MPT_FILES_COMMON += common/ComponentManager.h MPT_FILES_COMMON += common/Endianness.h @@ -128,9 +233,6 @@ MPT_FILES_COMMON += common/mptBaseMacros.h MPT_FILES_COMMON += common/mptBaseTypes.h MPT_FILES_COMMON += common/mptBaseUtils.h -MPT_FILES_COMMON += common/mptCRC.h -MPT_FILES_COMMON += common/mptException.h -MPT_FILES_COMMON += common/mptExceptionText.h MPT_FILES_COMMON += common/mptFileIO.cpp MPT_FILES_COMMON += common/mptFileIO.h MPT_FILES_COMMON += common/mptIO.cpp @@ -141,13 +243,11 @@ MPT_FILES_COMMON += common/mptMutex.h MPT_FILES_COMMON += common/mptOS.cpp MPT_FILES_COMMON += common/mptOS.h -MPT_FILES_COMMON += common/mptOSError.h MPT_FILES_COMMON += common/mptOSException.h MPT_FILES_COMMON += common/mptPathString.cpp MPT_FILES_COMMON += common/mptPathString.h MPT_FILES_COMMON += common/mptRandom.cpp MPT_FILES_COMMON += common/mptRandom.h -MPT_FILES_COMMON += common/mptSpan.h MPT_FILES_COMMON += common/mptString.cpp MPT_FILES_COMMON += common/mptString.h MPT_FILES_COMMON += common/mptStringBuffer.cpp @@ -379,12 +479,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 +509,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 +534,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 +560,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 14777) +++ 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/pch/PCH.h =================================================================== --- build/pch/PCH.h (revision 14777) +++ build/pch/PCH.h (working copy) @@ -40,19 +40,24 @@ #endif // MODPLUG_TRACKER +#include "mpt/base/span.hpp" +#include "mpt/crc/crc.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/exception_text/exception_text.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/system_error/system_error.hpp" + + #include "../common/mptBaseMacros.h" #include "../common/mptBaseTypes.h" #include "../common/mptAssert.h" #include "../common/mptBaseUtils.h" -#include "../common/mptException.h" -#include "../common/mptSpan.h" #include "../common/mptMemory.h" #include "../common/mptAlloc.h" #include "../common/mptString.h" -#include "../common/mptExceptionText.h" #include "../common/mptStringFormat.h" #include "../common/mptStringParse.h" -#include "../common/mptOSError.h" #include "../common/mptPathString.h" #include "../common/Logging.h" #include "../common/misc_util.h" @@ -61,7 +66,6 @@ #include "../common/Endianness.h" #include "../common/FileReader.h" #include "../common/FlagSet.h" -#include "../common/mptCRC.h" #include "../common/mptFileIO.h" #include "../common/mptIO.h" #include "../common/mptLibrary.h" @@ -77,10 +81,10 @@ #include "../common/version.h" #include "../misc/mptCPU.h" -#include "../misc/mptCrypto.h" #include "../misc/mptWine.h" + #include #include #include Index: build/premake/mpt-libopenmpt-small.lua =================================================================== --- build/premake/mpt-libopenmpt-small.lua (revision 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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-11 -i +cd .. Index: build/vs2017uwp/libopenmpt.vcxproj =================================================================== --- build/vs2017uwp/libopenmpt.vcxproj (revision 14777) +++ 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,8 +717,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + + + + true + + + true + - @@ -731,9 +850,6 @@ - - - @@ -740,11 +856,9 @@ - - Index: build/vs2017uwp/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017uwp/libopenmpt.vcxproj.filters (revision 14777) +++ 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,12 +132,315 @@ + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + 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 - - common - common @@ -66,15 +477,6 @@ common - - common - - - common - - - common - common @@ -93,9 +495,6 @@ common - - common - common @@ -105,9 +504,6 @@ common - - common - common Index: build/vs2017win10/libopenmpt-small.vcxproj =================================================================== --- build/vs2017win10/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -1220,7 +1220,6 @@ - @@ -1234,9 +1233,6 @@ - - - @@ -1243,11 +1239,9 @@ - - @@ -1353,6 +1347,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2017win10/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2017win10/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -1220,7 +1220,6 @@ - @@ -1234,9 +1233,6 @@ - - - @@ -1243,11 +1239,9 @@ - - @@ -1353,6 +1347,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win10/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017win10/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2017win10/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -596,7 +596,6 @@ - @@ -610,9 +609,6 @@ - - - @@ -619,11 +615,9 @@ - - @@ -729,6 +723,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -873,6 +962,16 @@ + + + + + + + + + + Index: build/vs2017win10/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2017win10/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -1484,7 +1484,6 @@ - @@ -1498,9 +1497,6 @@ - - - @@ -1507,11 +1503,9 @@ - - @@ -1532,12 +1526,9 @@ - - - @@ -1746,6 +1737,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1782,8 +1875,6 @@ - - @@ -2021,6 +2112,18 @@ + + + + + + + + + + + + Index: build/vs2017win10/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 @@ -1220,7 +1220,6 @@ - @@ -1234,9 +1233,6 @@ - - - @@ -1243,11 +1239,9 @@ - - @@ -1268,12 +1262,9 @@ - - - @@ -1301,6 +1292,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1324,8 +1417,6 @@ - - Index: build/vs2017win10/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2017win10/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2017win10/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2017win10/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -1484,7 +1484,6 @@ - @@ -1498,9 +1497,6 @@ - - - @@ -1507,11 +1503,9 @@ - - @@ -1532,12 +1526,9 @@ - - - @@ -1746,6 +1737,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1782,8 +1875,6 @@ - - @@ -2021,6 +2112,18 @@ + + + + + + + + + + + + Index: build/vs2017win10/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 @@ -1484,7 +1484,6 @@ - @@ -1498,9 +1497,6 @@ - - - @@ -1507,11 +1503,9 @@ - - @@ -1532,12 +1526,9 @@ - - - @@ -1746,6 +1737,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1782,8 +1875,6 @@ - - @@ -2021,6 +2112,18 @@ + + + + + + + + + + + + Index: build/vs2017win10/OpenMPT.vcxproj.filters =================================================================== --- build/vs2017win10/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -1196,7 +1196,6 @@ - @@ -1210,9 +1209,6 @@ - - - @@ -1219,11 +1215,9 @@ - - @@ -1235,13 +1229,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1266,8 +1359,6 @@ - - Index: build/vs2017win10/signtool.vcxproj.filters =================================================================== --- build/vs2017win10/signtool.vcxproj.filters (revision 14777) +++ build/vs2017win10/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/vs2017win7/libopenmpt-small.vcxproj =================================================================== --- build/vs2017win7/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -603,7 +603,6 @@ - @@ -617,9 +616,6 @@ - - - @@ -626,11 +622,9 @@ - - @@ -736,6 +730,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2017win7/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2017win7/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -603,7 +603,6 @@ - @@ -617,9 +616,6 @@ - - - @@ -626,11 +622,9 @@ - - @@ -736,6 +730,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017win7/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017win7/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2017win7/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -299,7 +299,6 @@ - @@ -313,9 +312,6 @@ - - - @@ -322,11 +318,9 @@ - - @@ -432,6 +426,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -576,6 +665,16 @@ + + + + + + + + + + Index: build/vs2017win7/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2017win7/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -735,7 +735,6 @@ - @@ -749,9 +748,6 @@ - - - @@ -758,11 +754,9 @@ - - @@ -783,12 +777,9 @@ - - - @@ -997,6 +988,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1033,8 +1126,6 @@ - - @@ -1272,6 +1363,18 @@ + + + + + + + + + + + + Index: build/vs2017win7/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 @@ -603,7 +603,6 @@ - @@ -617,9 +616,6 @@ - - - @@ -626,11 +622,9 @@ - - @@ -651,12 +645,9 @@ - - - @@ -684,6 +675,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -707,8 +800,6 @@ - - Index: build/vs2017win7/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2017win7/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2017win7/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2017win7/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -735,7 +735,6 @@ - @@ -749,9 +748,6 @@ - - - @@ -758,11 +754,9 @@ - - @@ -783,12 +777,9 @@ - - - @@ -997,6 +988,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1033,8 +1126,6 @@ - - @@ -1272,6 +1363,18 @@ + + + + + + + + + + + + Index: build/vs2017win7/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 @@ -735,7 +735,6 @@ - @@ -749,9 +748,6 @@ - - - @@ -758,11 +754,9 @@ - - @@ -783,12 +777,9 @@ - - - @@ -997,6 +988,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1033,8 +1126,6 @@ - - @@ -1272,6 +1363,18 @@ + + + + + + + + + + + + Index: build/vs2017win7/OpenMPT.vcxproj.filters =================================================================== --- build/vs2017win7/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -591,7 +591,6 @@ - @@ -605,9 +604,6 @@ - - - @@ -614,11 +610,9 @@ - - @@ -630,13 +624,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -661,8 +754,6 @@ - - Index: build/vs2017win7/signtool.vcxproj.filters =================================================================== --- build/vs2017win7/signtool.vcxproj.filters (revision 14777) +++ build/vs2017win7/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/vs2017winxp/libopenmpt-small.vcxproj =================================================================== --- build/vs2017winxp/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -605,7 +605,6 @@ - @@ -619,9 +618,6 @@ - - - @@ -628,11 +624,9 @@ - - @@ -738,6 +732,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2017winxp/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2017winxp/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -605,7 +605,6 @@ - @@ -619,9 +618,6 @@ - - - @@ -628,11 +624,9 @@ - - @@ -738,6 +732,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2017winxp/libopenmpt.vcxproj.filters =================================================================== --- build/vs2017winxp/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2017winxp/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -300,7 +300,6 @@ - @@ -314,9 +313,6 @@ - - - @@ -323,11 +319,9 @@ - - @@ -433,6 +427,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577,6 +666,16 @@ + + + + + + + + + + Index: build/vs2017winxp/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2017winxp/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -725,7 +725,6 @@ - @@ -739,9 +738,6 @@ - - - @@ -748,11 +744,9 @@ - - @@ -764,12 +758,9 @@ - - - @@ -978,6 +969,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1014,8 +1107,6 @@ - - @@ -1253,6 +1344,18 @@ + + + + + + + + + + + + Index: build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -63,9 +171,6 @@ common - - common - common @@ -105,15 +210,6 @@ common - - common - - - common - - - common - common @@ -132,9 +228,6 @@ common - - common - common @@ -144,9 +237,6 @@ common - - common - common @@ -180,9 +270,6 @@ common - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -822,6 +903,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 +1313,6 @@ misc - - misc - - - misc - misc @@ -1643,6 +2024,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 14777) +++ 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 @@ -605,7 +605,6 @@ - @@ -619,9 +618,6 @@ - - - @@ -628,11 +624,9 @@ - - @@ -653,12 +647,9 @@ - - - @@ -686,6 +677,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -709,8 +802,6 @@ - - Index: build/vs2017winxp/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2017winxp/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2017winxp/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2017winxp/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -725,7 +725,6 @@ - @@ -739,9 +738,6 @@ - - - @@ -748,11 +744,9 @@ - - @@ -764,12 +758,9 @@ - - - @@ -978,6 +969,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1014,8 +1107,6 @@ - - @@ -1253,6 +1344,18 @@ + + + + + + + + + + + + Index: build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -63,9 +171,6 @@ common - - common - common @@ -105,15 +210,6 @@ common - - common - - - common - - - common - common @@ -132,9 +228,6 @@ common - - common - common @@ -144,9 +237,6 @@ common - - common - common @@ -180,9 +270,6 @@ common - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -822,6 +903,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 +1313,6 @@ misc - - misc - - - misc - misc @@ -1643,6 +2024,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 14777) +++ 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 14777) +++ 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 @@ -725,7 +725,6 @@ - @@ -739,9 +738,6 @@ - - - @@ -748,11 +744,9 @@ - - @@ -764,12 +758,9 @@ - - - @@ -978,6 +969,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1014,8 +1107,6 @@ - - @@ -1253,6 +1344,18 @@ + + + + + + + + + + + + Index: build/vs2017winxp/OpenMPT.vcxproj.filters =================================================================== --- build/vs2017winxp/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -63,9 +171,6 @@ common - - common - common @@ -105,15 +210,6 @@ common - - common - - - common - - - common - common @@ -132,9 +228,6 @@ common - - common - common @@ -144,9 +237,6 @@ common - - common - common @@ -180,9 +270,6 @@ common - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -822,6 +903,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 +1313,6 @@ misc - - misc - - - misc - misc @@ -1643,6 +2024,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -593,7 +593,6 @@ - @@ -607,9 +606,6 @@ - - - @@ -616,11 +612,9 @@ - - @@ -632,13 +626,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -663,8 +756,6 @@ - - Index: build/vs2017winxp/signtool.vcxproj.filters =================================================================== --- build/vs2017winxp/signtool.vcxproj.filters (revision 14777) +++ build/vs2017winxp/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/vs2019uwp/libopenmpt.vcxproj =================================================================== --- build/vs2019uwp/libopenmpt.vcxproj (revision 14777) +++ 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,8 +963,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + + + + true + + + true + - @@ -977,9 +1096,6 @@ - - - @@ -986,11 +1102,9 @@ - - Index: build/vs2019uwp/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019uwp/libopenmpt.vcxproj.filters (revision 14777) +++ 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,12 +132,315 @@ + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + src\mpt\base + + + 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 - - common - common @@ -66,15 +477,6 @@ common - - common - - - common - - - common - common @@ -93,9 +495,6 @@ common - - common - common @@ -105,9 +504,6 @@ common - - common - common Index: build/vs2019win10/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win10/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -1218,7 +1218,6 @@ - @@ -1232,9 +1231,6 @@ - - - @@ -1241,11 +1237,9 @@ - - @@ -1351,6 +1345,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win10/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2019win10/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -1218,7 +1218,6 @@ - @@ -1232,9 +1231,6 @@ - - - @@ -1241,11 +1237,9 @@ - - @@ -1351,6 +1345,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win10/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2019win10/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -594,7 +594,6 @@ - @@ -608,9 +607,6 @@ - - - @@ -617,11 +613,9 @@ - - @@ -727,6 +721,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -871,6 +960,16 @@ + + + + + + + + + + Index: build/vs2019win10/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win10/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -1482,7 +1482,6 @@ - @@ -1496,9 +1495,6 @@ - - - @@ -1505,11 +1501,9 @@ - - @@ -1530,12 +1524,9 @@ - - - @@ -1744,6 +1735,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1780,8 +1873,6 @@ - - @@ -2019,6 +2110,18 @@ + + + + + + + + + + + + Index: build/vs2019win10/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 @@ -1218,7 +1218,6 @@ - @@ -1232,9 +1231,6 @@ - - - @@ -1241,11 +1237,9 @@ - - @@ -1266,12 +1260,9 @@ - - - @@ -1299,6 +1290,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1322,8 +1415,6 @@ - - Index: build/vs2019win10/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2019win10/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win10/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win10/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -1482,7 +1482,6 @@ - @@ -1496,9 +1495,6 @@ - - - @@ -1505,11 +1501,9 @@ - - @@ -1530,12 +1524,9 @@ - - - @@ -1744,6 +1735,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1780,8 +1873,6 @@ - - @@ -2019,6 +2110,18 @@ + + + + + + + + + + + + Index: build/vs2019win10/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 @@ -1482,7 +1482,6 @@ - @@ -1496,9 +1495,6 @@ - - - @@ -1505,11 +1501,9 @@ - - @@ -1530,12 +1524,9 @@ - - - @@ -1744,6 +1735,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1780,8 +1873,6 @@ - - @@ -2019,6 +2110,18 @@ + + + + + + + + + + + + Index: build/vs2019win10/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win10/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -1194,7 +1194,6 @@ - @@ -1208,9 +1207,6 @@ - - - @@ -1217,11 +1213,9 @@ - - @@ -1233,13 +1227,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1264,8 +1357,6 @@ - - Index: build/vs2019win10/signtool.vcxproj.filters =================================================================== --- build/vs2019win10/signtool.vcxproj.filters (revision 14777) +++ build/vs2019win10/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win10clangcl/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win10clangcl/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -1186,7 +1186,6 @@ - @@ -1200,9 +1199,6 @@ - - - @@ -1209,11 +1205,9 @@ - - @@ -1319,6 +1313,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2019win10clangcl/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -1186,7 +1186,6 @@ - @@ -1200,9 +1199,6 @@ - - - @@ -1209,11 +1205,9 @@ - - @@ -1319,6 +1313,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win10clangcl/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2019win10clangcl/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -578,7 +578,6 @@ - @@ -592,9 +591,6 @@ - - - @@ -601,11 +597,9 @@ - - @@ -711,6 +705,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -855,6 +944,16 @@ + + + + + + + + + + Index: build/vs2019win10clangcl/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -1450,7 +1450,6 @@ - @@ -1464,9 +1463,6 @@ - - - @@ -1473,11 +1469,9 @@ - - @@ -1498,12 +1492,9 @@ - - - @@ -1712,6 +1703,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1748,8 +1841,6 @@ - - @@ -1987,6 +2078,18 @@ + + + + + + + + + + + + Index: build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 @@ -1186,7 +1186,6 @@ - @@ -1200,9 +1199,6 @@ - - - @@ -1209,11 +1205,9 @@ - - @@ -1234,12 +1228,9 @@ - - - @@ -1267,6 +1258,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1290,8 +1383,6 @@ - - Index: build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2019win10clangcl/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -1450,7 +1450,6 @@ - @@ -1464,9 +1463,6 @@ - - - @@ -1473,11 +1469,9 @@ - - @@ -1498,12 +1492,9 @@ - - - @@ -1712,6 +1703,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1748,8 +1841,6 @@ - - @@ -1987,6 +2078,18 @@ + + + + + + + + + + + + Index: build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 @@ -1450,7 +1450,6 @@ - @@ -1464,9 +1463,6 @@ - - - @@ -1473,11 +1469,9 @@ - - @@ -1498,12 +1492,9 @@ - - - @@ -1712,6 +1703,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1748,8 +1841,6 @@ - - @@ -1987,6 +2078,18 @@ + + + + + + + + + + + + Index: build/vs2019win10clangcl/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -1162,7 +1162,6 @@ - @@ -1176,9 +1175,6 @@ - - - @@ -1185,11 +1181,9 @@ - - @@ -1201,13 +1195,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1232,8 +1325,6 @@ - - Index: build/vs2019win10clangcl/signtool.vcxproj.filters =================================================================== --- build/vs2019win10clangcl/signtool.vcxproj.filters (revision 14777) +++ build/vs2019win10clangcl/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win7/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win7/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -614,7 +614,6 @@ - @@ -628,9 +627,6 @@ - - - @@ -637,11 +633,9 @@ - - @@ -747,6 +741,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win7/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2019win7/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -614,7 +614,6 @@ - @@ -628,9 +627,6 @@ - - - @@ -637,11 +633,9 @@ - - @@ -747,6 +741,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win7/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win7/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2019win7/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -304,7 +304,6 @@ - @@ -318,9 +317,6 @@ - - - @@ -327,11 +323,9 @@ - - @@ -437,6 +431,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581,6 +670,16 @@ + + + + + + + + + + Index: build/vs2019win7/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win7/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -746,7 +746,6 @@ - @@ -760,9 +759,6 @@ - - - @@ -769,11 +765,9 @@ - - @@ -794,12 +788,9 @@ - - - @@ -1008,6 +999,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1137,6 @@ - - @@ -1283,6 +1374,18 @@ + + + + + + + + + + + + Index: build/vs2019win7/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 @@ -614,7 +614,6 @@ - @@ -628,9 +627,6 @@ - - - @@ -637,11 +633,9 @@ - - @@ -662,12 +656,9 @@ - - - @@ -695,6 +686,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -718,8 +811,6 @@ - - Index: build/vs2019win7/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2019win7/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win7/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win7/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -746,7 +746,6 @@ - @@ -760,9 +759,6 @@ - - - @@ -769,11 +765,9 @@ - - @@ -794,12 +788,9 @@ - - - @@ -1008,6 +999,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1137,6 @@ - - @@ -1283,6 +1374,18 @@ + + + + + + + + + + + + Index: build/vs2019win7/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 @@ -746,7 +746,6 @@ - @@ -760,9 +759,6 @@ - - - @@ -769,11 +765,9 @@ - - @@ -794,12 +788,9 @@ - - - @@ -1008,6 +999,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1137,6 @@ - - @@ -1283,6 +1374,18 @@ + + + + + + + + + + + + Index: build/vs2019win7/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win7/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -602,7 +602,6 @@ - @@ -616,9 +615,6 @@ - - - @@ -625,11 +621,9 @@ - - @@ -641,13 +635,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -672,8 +765,6 @@ - - Index: build/vs2019win7/signtool.vcxproj.filters =================================================================== --- build/vs2019win7/signtool.vcxproj.filters (revision 14777) +++ build/vs2019win7/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win81/libopenmpt-small.vcxproj =================================================================== --- build/vs2019win81/libopenmpt-small.vcxproj (revision 14777) +++ 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 @@ -614,7 +614,6 @@ - @@ -628,9 +627,6 @@ - - - @@ -637,11 +633,9 @@ - - @@ -747,6 +741,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/libopenmpt-small.vcxproj.filters =================================================================== --- build/vs2019win81/libopenmpt-small.vcxproj.filters (revision 14777) +++ build/vs2019win81/libopenmpt-small.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -614,7 +614,6 @@ - @@ -628,9 +627,6 @@ - - - @@ -637,11 +633,9 @@ - - @@ -747,6 +741,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: build/vs2019win81/libopenmpt.vcxproj.filters =================================================================== --- build/vs2019win81/libopenmpt.vcxproj.filters (revision 14777) +++ build/vs2019win81/libopenmpt.vcxproj.filters (working copy) @@ -22,14 +22,101 @@ {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} + common - - common - common @@ -69,15 +156,6 @@ common - - common - - - common - - - common - common @@ -96,9 +174,6 @@ common - - common - common @@ -108,9 +183,6 @@ common - - common - common @@ -426,6 +498,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 14777) +++ 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 @@ -304,7 +304,6 @@ - @@ -318,9 +317,6 @@ - - - @@ -327,11 +323,9 @@ - - @@ -437,6 +431,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581,6 +670,16 @@ + + + + + + + + + + Index: build/vs2019win81/libopenmpt_test.vcxproj.filters =================================================================== --- build/vs2019win81/libopenmpt_test.vcxproj.filters (revision 14777) +++ 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} @@ -30,9 +123,6 @@ common - - common - common @@ -72,15 +162,6 @@ common - - common - - - common - - - common - common @@ -99,9 +180,6 @@ common - - common - common @@ -111,9 +189,6 @@ common - - common - common @@ -429,6 +504,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 +1217,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 14777) +++ 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 @@ -746,7 +746,6 @@ - @@ -760,9 +759,6 @@ - - - @@ -769,11 +765,9 @@ - - @@ -794,12 +788,9 @@ - - - @@ -1008,6 +999,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1137,6 @@ - - @@ -1283,6 +1374,18 @@ + + + + + + + + + + + + Index: build/vs2019win81/OpenMPT-ANSI.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT-ANSI.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 @@ -614,7 +614,6 @@ - @@ -628,9 +627,6 @@ - - - @@ -637,11 +633,9 @@ - - @@ -662,12 +656,9 @@ - - - @@ -695,6 +686,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -718,8 +811,6 @@ - - Index: build/vs2019win81/OpenMPT-NativeSupport.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT-NativeSupport.vcxproj.filters (revision 14777) +++ build/vs2019win81/OpenMPT-NativeSupport.vcxproj.filters (working copy) @@ -31,14 +31,119 @@ {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} + common - - common - common @@ -78,15 +183,6 @@ common - - common - - - common - - - common - common @@ -105,9 +201,6 @@ common - - common - common @@ -117,9 +210,6 @@ common - - common - common @@ -180,9 +270,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -192,12 +279,6 @@ misc - - misc - - - misc - misc @@ -279,6 +360,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 +731,6 @@ misc - - misc - - - misc - misc Index: build/vs2019win81/OpenMPT-UTF8.vcxproj =================================================================== --- build/vs2019win81/OpenMPT-UTF8.vcxproj (revision 14777) +++ 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 @@ -746,7 +746,6 @@ - @@ -760,9 +759,6 @@ - - - @@ -769,11 +765,9 @@ - - @@ -794,12 +788,9 @@ - - - @@ -1008,6 +999,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1137,6 @@ - - @@ -1283,6 +1374,18 @@ + + + + + + + + + + + + Index: build/vs2019win81/OpenMPT-UTF8.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT-UTF8.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 @@ -746,7 +746,6 @@ - @@ -760,9 +759,6 @@ - - - @@ -769,11 +765,9 @@ - - @@ -794,12 +788,9 @@ - - - @@ -1008,6 +999,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1044,8 +1137,6 @@ - - @@ -1283,6 +1374,18 @@ + + + + + + + + + + + + Index: build/vs2019win81/OpenMPT.vcxproj.filters =================================================================== --- build/vs2019win81/OpenMPT.vcxproj.filters (revision 14777) +++ 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} @@ -75,9 +183,6 @@ common - - common - common @@ -117,15 +222,6 @@ common - - common - - - common - - - common - common @@ -144,9 +240,6 @@ common - - common - common @@ -156,9 +249,6 @@ common - - common - common @@ -219,9 +309,6 @@ include\asiomodern\include\ASIOModern - - misc - misc @@ -231,12 +318,6 @@ misc - - misc - - - misc - misc @@ -861,6 +942,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 +1352,6 @@ misc - - misc - - - misc - misc @@ -1682,6 +2063,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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 @@ -602,7 +602,6 @@ - @@ -616,9 +615,6 @@ - - - @@ -625,11 +621,9 @@ - - @@ -641,13 +635,112 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -672,8 +765,6 @@ - - Index: build/vs2019win81/signtool.vcxproj.filters =================================================================== --- build/vs2019win81/signtool.vcxproj.filters (revision 14777) +++ build/vs2019win81/signtool.vcxproj.filters (working copy) @@ -13,14 +13,119 @@ {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} + common - - common - common @@ -60,15 +165,6 @@ common - - common - - - common - - - common - common @@ -87,9 +183,6 @@ common - - common - common @@ -99,9 +192,6 @@ common - - common - common @@ -135,9 +225,6 @@ common - - misc - misc @@ -147,15 +234,315 @@ misc - + misc - - misc + + src\mpt\base - - 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\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 +611,6 @@ misc - - misc - - - misc - misc Index: build/wine/build_wine_support.cmd =================================================================== --- build/wine/build_wine_support.cmd (revision 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ build/xcode9-iphoneos/libopenmpt.xcodeproj/project.pbxproj (working copy) @@ -8,275 +8,371 @@ /* Begin PBXBuildFile section */ 04B9F7EDF020BEBB598CD2D1 /* BuildSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = B3EA35381FAF3428E81465F2 /* BuildSettings.h */; }; - 5977A663C5DC39EA4EB5DBC2 /* CompilerDetect.h in Headers */ = {isa = PBXBuildFile; fileRef = C8BB03B6B40DDBA59D2C18B6 /* CompilerDetect.h */; }; - 97A51AD6834E8205ACE49D84 /* ComponentManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF79CCBECBE1928C344DA7A2 /* ComponentManager.cpp */; }; - FEF158D1EA6FA96AD3676702 /* ComponentManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DE7DDE97901418BC223511F /* ComponentManager.h */; }; - DAD9CB9EC656BFE1EFD3BFF5 /* Endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C2B344957B1EEF1EDB38C9 /* Endianness.h */; }; - 6229FC8D4E91C25BB7FCD671 /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7188A7C7DD4CA6B7A6B2D681 /* FileReader.cpp */; }; - 897DB89B75FAABDE9E77ACF2 /* FileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 789C40CDE455AB776DB5C551 /* FileReader.h */; }; - 83698039EFCE13C078A7B598 /* FileReaderFwd.h in Headers */ = {isa = PBXBuildFile; fileRef = DB7781B2C7C958A2B0E895B2 /* FileReaderFwd.h */; }; - B7827C2623477B16ECACABE0 /* FlagSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 469D619132EE4CD35B523B95 /* FlagSet.h */; }; - 354D6662A1DC274DAAD80865 /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C444C007B080C3711993DB68 /* Logging.cpp */; }; - DC378AE848FC88D81162B9A2 /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B472BF53798163760FC04F9 /* Logging.h */; }; - B559BADCA1D6AD1FCA53AE33 /* Profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 242D314090E69BEA1946B6C4 /* Profiler.cpp */; }; - 93FCA3CF7F4E7BBF686DB8CF /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2F52B3579EA732A0876232 /* Profiler.h */; }; - 96E97B500204DFF14B26EF85 /* misc_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45347CD8311B3ED0DA6BA4ED /* misc_util.cpp */; }; - 7DD0DCFCE95F9EE7F25B7FFF /* misc_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C9B7D60F8D680CA61E998C1 /* misc_util.h */; }; - 3283689D1ED53F8D07F47C9D /* mptAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D8BBFD2D47117D7630CC7C /* mptAlloc.h */; }; - BB034F2E27931019308FF130 /* mptAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A4F1515768B187FDF9D3076 /* mptAssert.h */; }; - 826742EFEECCD57577A5774E /* mptBaseMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFA3D21664C15114F6B5221 /* mptBaseMacros.h */; }; - F40F5E14E07724E249E338F8 /* mptBaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C38BA8062F50A7F6F8B5D7C0 /* mptBaseTypes.h */; }; - F200F018DE68B6E647D4CAFC /* mptBaseUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 016662BA6D2A61AA36909174 /* mptBaseUtils.h */; }; - 003C0BC0EC22CDB7957333D5 /* mptCRC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FED58597BD0679984D395D5 /* mptCRC.h */; }; - 991FEA408587B00EEEF2C424 /* mptException.h in Headers */ = {isa = PBXBuildFile; fileRef = 48006EA3B4C46C937D2A9D5D /* mptException.h */; }; - B748981BA3C6E8B48CBEA64C /* mptExceptionText.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBD12C8FBD7756944FA85FD /* mptExceptionText.h */; }; - 18A728A284C18B43CDE39BD7 /* mptFileIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 87F8F9C673DFBBBE1C3022DC /* mptFileIO.cpp */; }; - 7F45D821EBD4990CF4D07A24 /* mptFileIO.h in Headers */ = {isa = PBXBuildFile; fileRef = CE66D9C8BAA2DC3223B5F429 /* mptFileIO.h */; }; - 1C8E80F988527FE951B8AFB3 /* mptIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BB5029B7706EEDCA06ADC9E /* mptIO.cpp */; }; - 83AABB5EEF63260978C340E3 /* mptIO.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C19A61BEE764C8A72DEA93 /* mptIO.h */; }; - B475924FA0DD581D09496D33 /* mptLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CE42646D8A82536A10E5600 /* mptLibrary.cpp */; }; - 5B8D4BEC470A3F2F70873F43 /* mptLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A01842376BAEECDFF1909A8 /* mptLibrary.h */; }; - A1EC672E0D7C291916780A31 /* mptMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = B090B9769CCCBCE005DFD4D7 /* mptMemory.h */; }; - 3DC787D929195FC912389CD9 /* mptMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA9A22F5818F8AEA101B3AE /* mptMutex.h */; }; - 89ECFABBF5B0F9ABBE162A76 /* mptOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D81B905BC46C7B9DEDD0695F /* mptOS.cpp */; }; - 07CD12A573867D4FFCE59729 /* mptOS.h in Headers */ = {isa = PBXBuildFile; fileRef = DF3010EFCB56DA55B49C5F21 /* mptOS.h */; }; - 93F995367F768979A8F3898D /* mptOSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 42EAD35FAEA33E0A370359E4 /* mptOSError.h */; }; - DA5A9FC2C66D9F1B6F577C08 /* mptOSException.h in Headers */ = {isa = PBXBuildFile; fileRef = A92ACF5915BA90441EB6715C /* mptOSException.h */; }; - CA192FA4368A311DFFA8ABA5 /* mptPathString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79EBBC0F6568B0528EE5B066 /* mptPathString.cpp */; }; - B1D4757C1D3A0903A612ABDB /* mptPathString.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C6EBAA2C18C39A153700AB /* mptPathString.h */; }; - 42BF1D47AED980E8F7FB907C /* mptRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A2051662607135ECF57797B /* mptRandom.cpp */; }; - 294B75EB95DA36D69ED617EE /* mptRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 38BA47EA24F64A548D08634B /* mptRandom.h */; }; - 3C01D6C7A8C5D4B7712B0582 /* mptSpan.h in Headers */ = {isa = PBXBuildFile; fileRef = ABB43B489705278AC069154C /* mptSpan.h */; }; - 9E08049F0A236740534577D4 /* mptString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DCE2ABD39B5ECB4E20553D2 /* mptString.cpp */; }; - 858D411FF11C030AFA18E421 /* mptString.h in Headers */ = {isa = PBXBuildFile; fileRef = 14132ED7004F314169614938 /* mptString.h */; }; - 3311F54C9F4C5510A841D29F /* mptStringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BC5B2E4772D79B2E0988DC8 /* mptStringBuffer.cpp */; }; - 5AC63AFAC6363D738F55B7FB /* mptStringBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 097E1645F5FA09881E780A9C /* mptStringBuffer.h */; }; - 462288DCB25DE89FBB52652F /* mptStringFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 355A76D121C23C9F8A2D51B5 /* mptStringFormat.cpp */; }; - AD76A01919E7A292E2051D1B /* mptStringFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CEEB443686BA88691E8A89A /* mptStringFormat.h */; }; - BC43C5C9A8C1156391B9D3FA /* mptStringParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BAA820277C4E5A3C0E6F537 /* mptStringParse.cpp */; }; - 41EE029CAD5E0515767D7F9D /* mptStringParse.h in Headers */ = {isa = PBXBuildFile; fileRef = 928059B2FE0F1B9D070CFCB4 /* mptStringParse.h */; }; - E9EB5A2FD5684E72FEE54E86 /* mptThread.h in Headers */ = {isa = PBXBuildFile; fileRef = F8E2355B649CA005EDFBBADF /* mptThread.h */; }; - 7DBE1EBF693B120292B81216 /* mptTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CC952A87882BD5201E2D72C /* mptTime.cpp */; }; - 24B765E010093DD0F9277AE0 /* mptTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 9319403DFF8795BC487150BC /* mptTime.h */; }; - 0918AA01F5949D441E129E58 /* mptUUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18FB305284B49BFC0D14B6D6 /* mptUUID.cpp */; }; - C7B22437B304FC269C233937 /* mptUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F5892890BC7E70854B0A208 /* mptUUID.h */; }; - AAE911569628BCD13FAB9803 /* serialization_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 990A32C5054692880E3B0F18 /* serialization_utils.cpp */; }; - 114631F3FDD9269B669E804F /* serialization_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C6C6E84C37C961155643EA /* serialization_utils.h */; }; - CF9B52883B60517804C68142 /* stdafx.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E6F72886AC05DCA93244C8C /* stdafx.h */; }; - 48A5602B3422546E5D9F5482 /* version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F784BBFA633E26A5EC9D407F /* version.cpp */; }; - 46E408D73236E0C61B551DD7 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = BEDEE25B2A4D38DB7336F3DA /* version.h */; }; - 71C931155DDC316E06C60E5B /* versionNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C36B686C522D53754E0E6B /* versionNumber.h */; }; - F0334E795CA450F225C3CA7A /* libopenmpt.h in Headers */ = {isa = PBXBuildFile; fileRef = FF7D561FEBFA496214784A76 /* libopenmpt.h */; }; - 128ADA117EC53AD587BAB764 /* libopenmpt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A12227FB8D8AEDC8F6F501DF /* libopenmpt.hpp */; }; - F136D2675DFD2E84A658BDE6 /* libopenmpt_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0A38FA6CCB68FFF75A06CEC /* libopenmpt_c.cpp */; }; - 62872C224EC6D69DF748B3CF /* libopenmpt_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 51358D5ABD70ED1DC6656AAD /* libopenmpt_config.h */; }; - DCF2BB5E48046405D155F644 /* libopenmpt_cxx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB8C8BC6970ADC5F80029AF7 /* libopenmpt_cxx.cpp */; }; - 01E956A36DAFB3BFB60A4222 /* libopenmpt_ext.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CBC8E2DCDEC83B85C8A528 /* libopenmpt_ext.h */; }; - 631893B2CF293B59587BCD98 /* libopenmpt_ext.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D2619CDABEDFEC73A7D7AA0B /* libopenmpt_ext.hpp */; }; - F160FBD5DD35438906E58285 /* libopenmpt_ext_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00F1936D6C023C14F553CE53 /* libopenmpt_ext_impl.cpp */; }; - 4F6DE6103B422EC464F16DC0 /* libopenmpt_ext_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E4A50270A5CF8CD93AD8A0D /* libopenmpt_ext_impl.hpp */; }; - 3C74EB7D28B395F9D135722B /* libopenmpt_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB31548F576DB452606231E2 /* libopenmpt_impl.cpp */; }; - C3AA4348AFE9EDC3586CCAF5 /* libopenmpt_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1278B7FF7EB317C387A89452 /* libopenmpt_impl.hpp */; }; - 70F53D505C9F735F45707B7A /* libopenmpt_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F96AEB5CB5C0BD214B89934 /* libopenmpt_internal.h */; }; - 19A28366851619C44E6066D3 /* libopenmpt_stream_callbacks_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 881BE943741C7DBE9DE4E942 /* libopenmpt_stream_callbacks_buffer.h */; }; - 02FAF2A26E180770B7E50C82 /* libopenmpt_stream_callbacks_fd.h in Headers */ = {isa = PBXBuildFile; fileRef = 5196A3873D016493E61CC9F8 /* libopenmpt_stream_callbacks_fd.h */; }; - DA4654D946B0E93BCFF397E6 /* libopenmpt_stream_callbacks_file.h in Headers */ = {isa = PBXBuildFile; fileRef = E9072015D5DDA612BE87C165 /* libopenmpt_stream_callbacks_file.h */; }; - 589C32B1C4B824A28D90910F /* libopenmpt_version.h in Headers */ = {isa = PBXBuildFile; fileRef = 6754160A53FD7D397C9399B8 /* libopenmpt_version.h */; }; - 1AA3E95C8613ECD54F32665E /* AudioSample.h in Headers */ = {isa = PBXBuildFile; fileRef = E94A3B16D5C72E59FE442F6D /* AudioSample.h */; }; - 5F2B61424BA8548574255599 /* Dither.h in Headers */ = {isa = PBXBuildFile; fileRef = 376C68D9A325D3832C85ED5D /* Dither.h */; }; - 31A4F8A39D098C2A26E22D03 /* MixSample.h in Headers */ = {isa = PBXBuildFile; fileRef = E04519EDCC97F0DCB5B62DED /* MixSample.h */; }; - 945D894680F17EEEE9B5D8A2 /* MixSampleConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 83603E98EFD04011B8EFBA99 /* MixSampleConvert.h */; }; - C1E8E0E1AD66317B965EEF12 /* SampleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 10C48C997CDEEF3AC50000CF /* SampleBuffer.h */; }; - 1211D7DEFE8E2778E786E50F /* SampleFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = C135F3922D505634767266C8 /* SampleFormat.h */; }; - D623E641C2F82DF5EBA76DF1 /* SampleFormatConverters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E4E0060BA5FA80643B13A46 /* SampleFormatConverters.h */; }; - 2876BC03140AB2AB7DCE0B60 /* SampleFormatCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 97CCA6B8033DA931CC5B23BA /* SampleFormatCopy.h */; }; - B7DD7231A32F4A218C4E8731 /* AGC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46183367B28688E6FB6F43E6 /* AGC.cpp */; }; - 5E570F334A3ED12AF38E3748 /* AGC.h in Headers */ = {isa = PBXBuildFile; fileRef = CD394DF7391D5C3742208A73 /* AGC.h */; }; - 17DB0EE1032DE6D0EC4B23E1 /* DSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A639A31612A8F8955B91B395 /* DSP.cpp */; }; - 15C09DFB01A75FF3AAF7C510 /* DSP.h in Headers */ = {isa = PBXBuildFile; fileRef = 2494821B9077915B997ABF97 /* DSP.h */; }; - 215326728D172562567D552C /* EQ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90CB8F337C1C7B75A5806937 /* EQ.cpp */; }; - 08C29F53747B0AFEFDDA24D8 /* EQ.h in Headers */ = {isa = PBXBuildFile; fileRef = 5712F8F64338C25D2C7E4729 /* EQ.h */; }; - 55866632C1A0C9D30AC3D967 /* Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4F5C613B0DC880B592DEF28 /* Reverb.cpp */; }; - 3C69FEA8A8F8BF93B1F4A0AB /* Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B509D47778CA0B1E09EB8A8 /* Reverb.h */; }; - 8DAD47C4F99432BA02833436 /* AudioCriticalSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C7C769D28106C4591D4C5F9 /* AudioCriticalSection.cpp */; }; - F42D6146604A53372922C0A4 /* AudioCriticalSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8374A0D26F1D080298B32381 /* AudioCriticalSection.h */; }; - 39AC8F942555F7C34EEB1243 /* AudioReadTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4820202EB485B3B43D5E558D /* AudioReadTarget.h */; }; - B8E221FAA44AE8C70DB6FCDD /* BitReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2770B7559334B6455C9AE60F /* BitReader.h */; }; - 02B9DE21EECBDE7A97B5BB67 /* ChunkReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 234520938FD4E17D98D0C295 /* ChunkReader.h */; }; - 7BA88CC267105390D07B67A6 /* Container.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD00B1E76940A0E3FFA3AD8 /* Container.h */; }; - 3243F49B9E0951B8E764DF1A /* ContainerMMCMP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81C3378A6DD637E316C014D0 /* ContainerMMCMP.cpp */; }; - 5CC56D85486ED5B47104F133 /* ContainerPP20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B374EEFF79CE1758075834E /* ContainerPP20.cpp */; }; - 96B71BAA02F37B6D0BE8F8FC /* ContainerUMX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5CD504691351714FAA02B2A /* ContainerUMX.cpp */; }; - 285F14E2949A74A59D8FF134 /* ContainerXPK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60C9E97F4C31B04DB59CC463 /* ContainerXPK.cpp */; }; - F33927D4DFA1EDA1480D02B8 /* Dlsbank.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82966FC4EE5A6EB4B7C09E7E /* Dlsbank.cpp */; }; - 9A65CE7D86E2C1C0AF5FC2D4 /* Dlsbank.h in Headers */ = {isa = PBXBuildFile; fileRef = 094AC98A75033435FE624E0F /* Dlsbank.h */; }; - 14ECEE7F0054B54D69BFC963 /* Fastmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 033046886FF44478385A7542 /* Fastmix.cpp */; }; - 9ABABC38062050BF8FF8F197 /* FloatMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = A976C22395C899137EE7D623 /* FloatMixer.h */; }; - C236E8A5AEDF4FD5D7756B54 /* ITCompression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA75D59E26DB6825AFB30AFE /* ITCompression.cpp */; }; - 293CB97915BA0913FEB1C7AA /* ITCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 785621D1E47084722D939406 /* ITCompression.h */; }; - A5600C3091C8D2FDFA33E713 /* ITTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F445C353600AC2432970F20D /* ITTools.cpp */; }; - CC377690B8B469D3E1316AE7 /* ITTools.h in Headers */ = {isa = PBXBuildFile; fileRef = FB7426CE672E9178F08DAB52 /* ITTools.h */; }; - 64B8B1A9D09F9C9FD98D9E1B /* InstrumentExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A411869F38072E08FD60E2 /* InstrumentExtensions.cpp */; }; - 49631505B57D78A6FE9F883A /* IntMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A6F598CD8DB79076DE1DAE /* IntMixer.h */; }; - DA0ECFD34674625ACF4C0433 /* Load_669.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E922BFF4D57496E4BE93D3F4 /* Load_669.cpp */; }; - 0B4B8D5177B020D80089C2B0 /* Load_amf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7ABCB9EE660E91DE4F2DCEEE /* Load_amf.cpp */; }; - 9A36754A069C08D18F74AAA9 /* Load_ams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9723D6595C414557EE35165 /* Load_ams.cpp */; }; - CB75625637DBF5DCC0B397B5 /* Load_c67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A2F3980268110700FA04D80 /* Load_c67.cpp */; }; - 67BA1D31D31FB1B75CF85290 /* Load_dbm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FADA47D2BFF7B6D141EB97D /* Load_dbm.cpp */; }; - 13A07838FFB27891A89C557E /* Load_digi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 626C67FACEFB28E5D7F709FD /* Load_digi.cpp */; }; - 4F376F0CBB9C02934475A46B /* Load_dmf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEEA1E22A4079D2135FB6E2 /* Load_dmf.cpp */; }; - 9E13DF0A0A7972919351146A /* Load_dsm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D1D0419196FDB08028E1819 /* Load_dsm.cpp */; }; - 79435BA565565BFE0E4038EB /* Load_dsym.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08D8B6C2746778AD7D6359C5 /* Load_dsym.cpp */; }; - FA1AFF6E668092F5EF5834CE /* Load_dtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2A55F16DEF73606C7167416 /* Load_dtm.cpp */; }; - 5081AF39BCE642C045BFE498 /* Load_far.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FB35A128B05320274246F12 /* Load_far.cpp */; }; - A00304C30C69974995413922 /* Load_fmt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF83F00ADBD5C7FAC4F4040B /* Load_fmt.cpp */; }; - 33877EE79FEC116E28C5B346 /* Load_gdm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2BF428A8E111A7A7730578A /* Load_gdm.cpp */; }; - 19A574CC850A08530EE3A92B /* Load_imf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8156F5FB467464F9D86835F /* Load_imf.cpp */; }; - D3E39AFBBF4B61C928B775DF /* Load_it.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BE69F5F97AA9E4F6010CF19 /* Load_it.cpp */; }; - 45F1E78BB1567B123A2F1DEB /* Load_itp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74162BB8606802A849873FB8 /* Load_itp.cpp */; }; - 7723EED7E388815E6C612337 /* Load_mdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 66A16AE852F341D83B127FE8 /* Load_mdl.cpp */; }; - 128E2E117EF3C19707CC6370 /* Load_med.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 213FEC7A0D91C36AF6AF007B /* Load_med.cpp */; }; - D8BA2E084420C28ECDF86367 /* Load_mid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27D80507132ADDF6FC481A07 /* Load_mid.cpp */; }; - 662C1EA7D291B12D5B6A5306 /* Load_mo3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE23C7BACA759EAAB394DBBA /* Load_mo3.cpp */; }; - 19950F6185FAA2E70ED344C0 /* Load_mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C80574FBB4574BEB9D7688FB /* Load_mod.cpp */; }; - 8EB8E77CFA1D7B0383F61CDC /* Load_mt2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DECE55F093EBD4FF25CFA5F /* Load_mt2.cpp */; }; - CB35786C379B0BF3C073ADCB /* Load_mtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AEFB64126418E310F60CB41 /* Load_mtm.cpp */; }; - AB62E49197E0342B80D8F2C2 /* Load_mus_km.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAE3374A26FE9AEB6F20AB7F /* Load_mus_km.cpp */; }; - 269F5D2B9204F1B11BDD928A /* Load_okt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EDE23268A30FB15734F3826 /* Load_okt.cpp */; }; - 83C85939EF2DEDBF78068F98 /* Load_plm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2EE6B1DDE40430DC75F801D /* Load_plm.cpp */; }; - 6C0D34C3D872C749614B6922 /* Load_psm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B3E749027904B8010AF8890 /* Load_psm.cpp */; }; - 0F225A277B87EDAD04608F86 /* Load_ptm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE209F35EA727625D391B335 /* Load_ptm.cpp */; }; - 3340DFDA9FA57261287E143A /* Load_s3m.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2D80BC78E2AE3B6774920C7 /* Load_s3m.cpp */; }; - 0A97505676FCE3DCFFD485B5 /* Load_sfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0258BF8EEEA9967ED7C8D38E /* Load_sfx.cpp */; }; - CF9FD67B3B056A02C4DD0BDB /* Load_stm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE062679AA58FD6893773A79 /* Load_stm.cpp */; }; - D4761F3F40DCB2C5C9B4549E /* Load_stp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A32656D88F782DC878976AD8 /* Load_stp.cpp */; }; - B83E6EBDA4BCBE568DB47CEE /* Load_symmod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C3277113DE8A125C009BA6 /* Load_symmod.cpp */; }; - 2FB418CD9B19AC5324F24D2C /* Load_uax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EDF51BD0A3129ADF34F66BD /* Load_uax.cpp */; }; - 667FC337D2E456BE5BBDF896 /* Load_ult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E77EEE5AD3D0C54ABCEF025B /* Load_ult.cpp */; }; - 01B1F8F96D168C80F6EE2D59 /* Load_wav.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B010DAF39C62B1E38581EEF3 /* Load_wav.cpp */; }; - BABFF0BFA627B78D0F93CBA3 /* Load_xm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9A325CB556824BB1ECE5485 /* Load_xm.cpp */; }; - 674CF55A53C9E89D7C46E9B1 /* Loaders.h in Headers */ = {isa = PBXBuildFile; fileRef = B67C94FB2236FFA5AB951980 /* Loaders.h */; }; - 320CD7C19E7CD93A679B53C3 /* MIDIEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01A54485ED2138C8169F38DC /* MIDIEvents.cpp */; }; - 50609E71BCC531F8459ED3D0 /* MIDIEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 88BD923C740F6A2C5D2EA73C /* MIDIEvents.h */; }; - FD2EDE41699FE0BA32BE5A43 /* MIDIMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC1C3DB0D89930F301173107 /* MIDIMacros.cpp */; }; - E41891CE507E2455D956C62D /* MIDIMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = B33EA6149F907D0488AFBA14 /* MIDIMacros.h */; }; - 4D0BCC97391ECCF0E207A9DD /* MPEGFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C6B0284C8FAC36ED1F6A486 /* MPEGFrame.cpp */; }; - F4C0C0A8E028877649949B8C /* MPEGFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = E37887224F3D861218A3B6DC /* MPEGFrame.h */; }; - B97DF2DAA5E5B8A80E51CDBE /* Message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51385011BDFC4E0186627FCB /* Message.cpp */; }; - E0FF4937CC7C3D7AF5F93D8E /* Message.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE0A34DFB990EF884F928D2 /* Message.h */; }; - 5AD886F7C613E7BACF08644A /* MixFuncTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9638FF8D5CB55C63E376ADC /* MixFuncTable.cpp */; }; - 819FE097ED0FE310B62E5D99 /* MixFuncTable.h in Headers */ = {isa = PBXBuildFile; fileRef = F02A9277DCA785BA052586CE /* MixFuncTable.h */; }; - C67E91D5B2D068C59BEFA5D5 /* Mixer.h in Headers */ = {isa = PBXBuildFile; fileRef = F513060161825B80AA6B1680 /* Mixer.h */; }; - 50D90FC1BC147084C509ED13 /* MixerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 884A9E2774B264F5DD1D790B /* MixerInterface.h */; }; - 0993995475039CCD3E221656 /* MixerLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78C9FA866446EEC98DC3EEDD /* MixerLoops.cpp */; }; - F009CCE65C6F5F6DE5470146 /* MixerLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F58B7222BAA8E1214C9CB22 /* MixerLoops.h */; }; - 3118DFD71DC1460746576286 /* MixerSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4031A658AC9639DF356FDBB7 /* MixerSettings.cpp */; }; - D8F55A7CC473AB15AD6B69AD /* MixerSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = C7865D7E33A1C01F7CC3D0B3 /* MixerSettings.h */; }; - 0FC9B2457B39B5BE44582F47 /* ModChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E78CF131D309E574FC86E588 /* ModChannel.cpp */; }; - 7606F46DE26B87F46B4429CD /* ModChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 05E927AFF13AFF9EDA593CAF /* ModChannel.h */; }; - 3352268B1FFB8DBA4891A939 /* ModInstrument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02A29E0A6E073291F7DFD369 /* ModInstrument.cpp */; }; - 5AC727C9464578622F3D36FA /* ModInstrument.h in Headers */ = {isa = PBXBuildFile; fileRef = 09DF9E1A75F901BCBE1B1250 /* ModInstrument.h */; }; - 80EDE5166C00E66F15EAC25C /* ModSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF6196981BF1578324ED389B /* ModSample.cpp */; }; - FEA2089CEA0ACF695376E37F /* ModSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 76BEF36AE282F25AABE82225 /* ModSample.h */; }; - 7B64ACE067E2FC7950DABA11 /* ModSampleCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A83B34AF69D16EC3FC02680 /* ModSampleCopy.h */; }; - F4317F07E0AFCFA0C9A78D38 /* ModSequence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63C188DFCFDBEB8018FEFB14 /* ModSequence.cpp */; }; - 5BDAADB147EDAD0AF0D68AF7 /* ModSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = AA1915CB16A9D6B51FA5B7CD /* ModSequence.h */; }; - 6A603FED56B216DD3FD153ED /* OPL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 195FB3DD85CD085DCEB6C35C /* OPL.cpp */; }; - A8D4363D94BBF8343D0C5F52 /* OPL.h in Headers */ = {isa = PBXBuildFile; fileRef = E0AF57C14C9366015596943D /* OPL.h */; }; - 038481ACEF96810598805EF2 /* OggStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 521A6663BEA9274EC7A50866 /* OggStream.cpp */; }; - 2A9434D116FCFA9E7F670FB5 /* OggStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 59F2261CC5B6250C8E1C56D6 /* OggStream.h */; }; - 31D801561D55F59846D2F5AC /* Paula.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4002FE2CACBB68D7351B83B1 /* Paula.cpp */; }; - D8D38EC8C42566B8AD44A3C8 /* Paula.h in Headers */ = {isa = PBXBuildFile; fileRef = C775A39B33E4F81A7CCDB31A /* Paula.h */; }; - E958FF05D5C0C5D33E2CDAE9 /* Resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8155EB0DED19EAFDB67F1AC8 /* Resampler.h */; }; - E3B68D174F27909018460A19 /* RowVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 129D1878FE190CBB27970CCF /* RowVisitor.cpp */; }; - 4A6FD192B6D464193FAD06F2 /* RowVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 597D37F345CF0EE32EEE4BF3 /* RowVisitor.h */; }; - 432416ACAF89A93238624B0B /* S3MTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2F24F229E44271287636422 /* S3MTools.cpp */; }; - 2A4CA40F966607B1DF881745 /* S3MTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 798297766569596E0EBABF8B /* S3MTools.h */; }; - 4B303DDB37C43283A0888C37 /* SampleFormatBRR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3EF8A9B0F608D14D87E079D /* SampleFormatBRR.cpp */; }; - 5D8C01CEC99DA97452EF3BB4 /* SampleFormatFLAC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CF15914786FAAAD61676845 /* SampleFormatFLAC.cpp */; }; - 395D617A25F156228EB5B0D6 /* SampleFormatMP3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08C5199174351C0A3D549692 /* SampleFormatMP3.cpp */; }; - A2FF919B8ED51899777F33EC /* SampleFormatMediaFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51283E4FBD9A806B062FB6EF /* SampleFormatMediaFoundation.cpp */; }; - D4689EC5407A466CC9CBD8AB /* SampleFormatOpus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A36716E08FE5667978DD2411 /* SampleFormatOpus.cpp */; }; - F98711A1E51B07494EE060FD /* SampleFormatSFZ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 914210D4FDB2124DC6D18CD5 /* SampleFormatSFZ.cpp */; }; - 3D9E57B6A9BA49A77292B614 /* SampleFormatVorbis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C53444118FCAB704192C7EF /* SampleFormatVorbis.cpp */; }; - BD3A568FA9E3BDBED279D93D /* SampleFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8CAEC9B8F1415041CAE328 /* SampleFormats.cpp */; }; - DBCF74CD47350854D00DAA2C /* SampleIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AFFD6F63651AEE61F70EBF6 /* SampleIO.cpp */; }; - C231B3712E4C1613776E26A7 /* SampleIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 11894234FD6F042CA6C06A49 /* SampleIO.h */; }; - 3E9F97AEAAB9FA4FF3DB0AE4 /* Snd_defs.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FA7C6CA6B8E88C214DFEEDF /* Snd_defs.h */; }; - 7FC08C1F6B2853EDD4936703 /* Snd_flt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8ED5D7DDFA99D6CDC3FF0698 /* Snd_flt.cpp */; }; - 19C4832785DEE6C8CE00F75C /* Snd_fx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0889B141F46F73399DC0D956 /* Snd_fx.cpp */; }; - 9E7F6C348AE73202F3524718 /* Sndfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DE5ACEAB9A9ABDA820FDCA4 /* Sndfile.cpp */; }; - 8544208271C113C59A3E14D9 /* Sndfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 146A3EBF8023A9690983C343 /* Sndfile.h */; }; - 474F3CDDB3699F7EFC8BAF12 /* Sndmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F9C7BC50B833DBDB4D3A3DA /* Sndmix.cpp */; }; - 2BC31655176D4C64003E547F /* SoundFilePlayConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A2316F1A6E9720DEF440170 /* SoundFilePlayConfig.cpp */; }; - D2135289BE52FC0467D5D836 /* SoundFilePlayConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = C13B7D272D77DDEA366C5A7A /* SoundFilePlayConfig.h */; }; - 1562FC89817C5F2BCA9E6FBF /* Tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847994AF706056A719B1BCC4 /* Tables.cpp */; }; - FC54EA1568E4AB0071E08C18 /* Tables.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BE4B6B63720BA20A032D217 /* Tables.h */; }; - 964FD5E882B79BB6EB22B0CC /* Tagging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E2CE45C7AF0E24C43561317 /* Tagging.cpp */; }; - 7DB6A4C36933980692B0981A /* Tagging.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CC13DCB787AA87501DAC24F /* Tagging.h */; }; - 9DE27FDE894A46ACF2B55AC2 /* TinyFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECAC07275871061721D736E1 /* TinyFFT.cpp */; }; - C4DBB005B058A448D9D5A45C /* TinyFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BDB4C45F771F6FE8D63949 /* TinyFFT.h */; }; - A86D659114D3F8179DAB9AF0 /* UMXTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F788BDF4E3DA94E4CCF9D1F4 /* UMXTools.cpp */; }; - 06EA5B757204BF16BB26CFAA /* UMXTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC3B01D6AAA721513FBD832 /* UMXTools.h */; }; - 06288CA0F2D0F3CF1B670F4F /* UpgradeModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5C7AFC7612D434EEA05E526 /* UpgradeModule.cpp */; }; - 592F50D9C594E35F4E6D8538 /* WAVTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08381BBCF489F2ABDDA82FBC /* WAVTools.cpp */; }; - C099947F2CB4F72075D607B5 /* WAVTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F7A05BD3B61C7B4E4B12DD2 /* WAVTools.h */; }; - 40AD65842C2BB61D152374B5 /* WindowedFIR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FFD15809B177921E43989B5 /* WindowedFIR.cpp */; }; - FEBC9329EACF938293B9706F /* WindowedFIR.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F2488FE2810A7AEB7DEB91 /* WindowedFIR.h */; }; - 4F15E1953B7DA763A4E8BB79 /* XMTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EE81FA5CAAC1E9593124F5F /* XMTools.cpp */; }; - F6B9610DE23655500BB45564 /* XMTools.h in Headers */ = {isa = PBXBuildFile; fileRef = E5744324512EAECEDA8DC8A8 /* XMTools.h */; }; - 1AA1D44B860668D20FDF09AB /* load_j2b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 294D3010159F0700FEBD4410 /* load_j2b.cpp */; }; - B2726EB61E8F60A7E766CD14 /* mod_specifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 814AC2DA6DF3290A96894589 /* mod_specifications.cpp */; }; - D0CFE94D3CE191F4C5322434 /* mod_specifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E5A74DF462F8E6DD5AB67E /* mod_specifications.h */; }; - 99845C8105F55EFACE13D982 /* modcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08812CFDF4FD1F401D7B2054 /* modcommand.cpp */; }; - 805705E0ECBC986675953A3F /* modcommand.h in Headers */ = {isa = PBXBuildFile; fileRef = CFEBF58EBB3DCD7EA45C0A8F /* modcommand.h */; }; - 42C586B82E43D751173B95E9 /* modsmp_ctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F18BC5CD5DA6286FA6C83803 /* modsmp_ctrl.cpp */; }; - 29427C3515557C8EBE3E597B /* modsmp_ctrl.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E8E1922478A37D2D748495 /* modsmp_ctrl.h */; }; - EA7FD4C15644D3B11FAA037C /* opal.h in Headers */ = {isa = PBXBuildFile; fileRef = E266E428CEB7CF6AF71BBE2C /* opal.h */; }; - 791105846579CB51CEE4DF67 /* pattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4822C14EB4E6BF3E7D4CF008 /* pattern.cpp */; }; - A0A3247F8C2018C2B59D18D6 /* pattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2C9921BBE503CC44451EA6 /* pattern.h */; }; - 00695BFF6C7A03A6F5CB95E5 /* patternContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F9C3B3D3B1A8CD624124A6E /* patternContainer.cpp */; }; - A7DFD2AB13A62FC85C01BE2A /* patternContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = D68280FDC29580566B7F5D43 /* patternContainer.h */; }; - 468D8E30324D1FD59B6A07E0 /* DigiBoosterEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F527128B6144047C2A1C71E9 /* DigiBoosterEcho.cpp */; }; - 2D8CD3B419611B6842105B64 /* DigiBoosterEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2659D128380178B18993B7 /* DigiBoosterEcho.h */; }; - 00CDEF35EC0B9AB1958E76E3 /* LFOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2F0089A19B3BE964A43066F4 /* LFOPlugin.cpp */; }; - E75B72FED3EF67A63CB4C15A /* LFOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = F65E970E62CF99872BEE1310 /* LFOPlugin.h */; }; - 4698029332416AC25BD78541 /* OpCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 35100F5EA175A2E42A4E44BD /* OpCodes.h */; }; - 96964549826B8DFCAB1ACDF8 /* PlugInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85CB2752F1DCCFF87A2E6238 /* PlugInterface.cpp */; }; - FD78D5ECE9220BFCD2F31217 /* PlugInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = CC6D25B5383482D1818F1034 /* PlugInterface.h */; }; - FB8E692BE763B1DE1013F1DA /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CAB0009F36C2A845BF133B85 /* PluginManager.cpp */; }; - 221466A80EBE9BB7F78EA3D2 /* PluginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D13D8A553D04E771865F75D4 /* PluginManager.h */; }; - 915A0E727D2F5625A6DE9521 /* PluginMixBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A066DC7B0C78842295C91662 /* PluginMixBuffer.h */; }; - 3A13EC9426BD21A40F8E29BF /* PluginStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = E96DF64E5534536B9E8FE1CD /* PluginStructs.h */; }; - 286C08F99488FAE95D606757 /* SymMODEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3702474223ABAE714C41CAF0 /* SymMODEcho.cpp */; }; - 4F3100A4BB42A84A44943A8A /* SymMODEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E370FFE2AB55F9713AD1D2F /* SymMODEcho.h */; }; - 98386A3B04555C2CCD2CC999 /* Chorus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A748CBA393F132D3BC874E52 /* Chorus.cpp */; }; - 8DF551D2F906FA7882588CB8 /* Chorus.h in Headers */ = {isa = PBXBuildFile; fileRef = AE21EF679A9F3F018397FD98 /* Chorus.h */; }; - 83B3BA15EF25FD3138BA32B6 /* Compressor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 324CF1ED1E8B9B69C70D789B /* Compressor.cpp */; }; - EAB6A15B569E8C515F8C8ECD /* Compressor.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F7C0FD658BB6A5CE4F105A /* Compressor.h */; }; - 29D0281815A570CB3E54B0C7 /* DMOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38FD1854A40EC1FA2D60533A /* DMOPlugin.cpp */; }; - D0316790BCDB9C9FA5ACA4BA /* DMOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = BF96A8892B5D05A674B89308 /* DMOPlugin.h */; }; - 265149CF923834C59B263641 /* DMOUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E6CA3568A0099FEF3C4F2B2 /* DMOUtils.cpp */; }; - 4D174311B9333502820BA26F /* DMOUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CE2CB18288B334851214FC7 /* DMOUtils.h */; }; - 2808B687947AF8A3DD0E2E28 /* Distortion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B7E54627A324F1A24CA7CDD4 /* Distortion.cpp */; }; - 4F9E05E5BB85F0DAC473F256 /* Distortion.h in Headers */ = {isa = PBXBuildFile; fileRef = BE6B682FAAFF5DD713C4B78B /* Distortion.h */; }; - 7C697F89E87A273071CCB96F /* Echo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B5F02E737DD528020D51018 /* Echo.cpp */; }; - DA491E2D46107B498F6B09AC /* Echo.h in Headers */ = {isa = PBXBuildFile; fileRef = D256821FBE69827867535F65 /* Echo.h */; }; - 57AF309E435966AD2C2A6EC8 /* Flanger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6C3D4E8528A31059BE5BF67 /* Flanger.cpp */; }; - FE046BA8EA43152493C6F155 /* Flanger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DC18303D9FCE3C6E2F16056 /* Flanger.h */; }; - 8E12E12CFA2ED31DC306408B /* Gargle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD90FE0BC939663BF2CF81BA /* Gargle.cpp */; }; - 35069074A117381B2A69CA5A /* Gargle.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E42623506277BC395A3554 /* Gargle.h */; }; - 9BC4A6C78784376CF0A11F77 /* I3DL2Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3F92A725F161D6328EE89D0 /* I3DL2Reverb.cpp */; }; - 42EA5B482EBFA3FB576EE3F7 /* I3DL2Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = B12324271D35CCCDA6865E0D /* I3DL2Reverb.h */; }; - 225607830E003D92F7D044AD /* ParamEq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D13FDA133D0637308661C592 /* ParamEq.cpp */; }; - 097D43F5F5BBED709E3ECAA2 /* ParamEq.h in Headers */ = {isa = PBXBuildFile; fileRef = 984693AC0482F36F0D7770FF /* ParamEq.h */; }; - 4BE9706C37A90111A0C6E91B /* WavesReverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAAC944646C986370FA1F3A4 /* WavesReverb.cpp */; }; - C9073F92B5DC8645DE8BC641 /* WavesReverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 612E3B4CCD3FE3F256917532 /* WavesReverb.h */; }; - 4F32CE34BB4C31D6046F416A /* tuning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EBDDAED6AA49CE513F50203 /* tuning.cpp */; }; - B6CEB61B225E78062B5A591E /* tuning.h in Headers */ = {isa = PBXBuildFile; fileRef = C5E1C72CB11DCB961A30E38D /* tuning.h */; }; - 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 */; }; + 8E038C28FA3EECEB0334697B /* ComponentManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDA4225494209F3B2AD1D09 /* ComponentManager.cpp */; }; + BC69F860A8E748FA91DF0692 /* ComponentManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41C930DD0998650F9168764 /* ComponentManager.h */; }; + 18DB9399045887DC2DD587F0 /* Endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = A78448B4133EB35E9C9DCD38 /* Endianness.h */; }; + 2072C95A0CDA8F287545A43E /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6FE2766FDBA6755FA40CA629 /* FileReader.cpp */; }; + C77E8096B3FB73D9DC7874ED /* FileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = F65ED53C621840E7EB775AC1 /* FileReader.h */; }; + AA1F483A1685DBC09F5D7D99 /* FileReaderFwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 99113C54856313446E825054 /* FileReaderFwd.h */; }; + B5DC4BCE21A14ABEEA067B88 /* FlagSet.h in Headers */ = {isa = PBXBuildFile; fileRef = CD158EA1B96679E3E2CA67A5 /* FlagSet.h */; }; + B31E743B1FAE352628AA163E /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AF67226EEB6A8CD7FD8283 /* Logging.cpp */; }; + DA915990465658800FBC884A /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 89EADC5C753BC89E9E9FB660 /* Logging.h */; }; + F35A82D7DFD7751A0855762E /* Profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2EFC5AF0EA9305A97084B34 /* Profiler.cpp */; }; + 5A7E403546D017252FEF5435 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = E93A381155A98D909E924890 /* Profiler.h */; }; + 941244A4002DA745494FB7D9 /* misc_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98AFA3387F719BE1CFD7B8 /* misc_util.cpp */; }; + FBA1EAD56731ACC0702D8DD8 /* misc_util.h in Headers */ = {isa = PBXBuildFile; fileRef = CA05257BB64128E51F5440DC /* misc_util.h */; }; + F01C233FDC6EFA2EC58D373F /* mptAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = BFE3A15B2B52F7DA743BB2DA /* mptAlloc.h */; }; + 39D55C07A5641EF2AE60FF09 /* mptAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 48BABC2F34F6BF999D08D890 /* mptAssert.h */; }; + A91D0AF015839D769E5B3F4F /* mptBaseMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3894F8C224E6CFB20D050DC3 /* mptBaseMacros.h */; }; + B2582BE19EC0F1AE072C06C5 /* mptBaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = AA70483816354728DF9A77F2 /* mptBaseTypes.h */; }; + B049BDE59CB183B3051D98C9 /* mptBaseUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = FFBF31626B84305234EA601C /* mptBaseUtils.h */; }; + 7922C7B4E53C2A562E5F3AEA /* mptFileIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4893B4B8347A76B0DDCADCCD /* mptFileIO.cpp */; }; + A0742EC60C04F0B01500D1C8 /* mptFileIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F5DFCE53B99FF4FA4AB1747 /* mptFileIO.h */; }; + FD808E2269458D1232ABBDDC /* mptIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC1744E2B8682F24E1CC1DE6 /* mptIO.cpp */; }; + 7BB40E1DE76D79C770CD93A1 /* mptIO.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FEC8CBFC5B6F3A80B3CBF /* mptIO.h */; }; + 355D00B621C5C6838A30DB99 /* mptLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 644C64E5D01063D59976939F /* mptLibrary.cpp */; }; + 9CA0671B881D5B5EB19A5B72 /* mptLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = ABC705E51781708FA0E08A69 /* mptLibrary.h */; }; + C21BBED22EAB7FBD37A760D5 /* mptMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = 3187DC931DC3DFFD86D5F7F4 /* mptMemory.h */; }; + 3E1654242A682B1413876824 /* mptMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D54105FB9C265DE02AC20DE /* mptMutex.h */; }; + 8154385BED18374BB67E6715 /* mptOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 197ED1A205CFBCE42E33ABA6 /* mptOS.cpp */; }; + A8939466144DFF109DAC19EB /* mptOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D71F5F7EC34529E5AC8BAEB0 /* mptOS.h */; }; + D99667B1C5A9670A6E9344F7 /* mptOSException.h in Headers */ = {isa = PBXBuildFile; fileRef = 482B33D7B4BAF4C1BDB6D5D9 /* mptOSException.h */; }; + A9D5FE6B154601E5DE647B6D /* mptPathString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8FFA039E47C947C0DFA9490 /* mptPathString.cpp */; }; + D00C17173C72AA9DC54A4C76 /* mptPathString.h in Headers */ = {isa = PBXBuildFile; fileRef = FFAE7297EB004A87D41F8797 /* mptPathString.h */; }; + A16384AD0D7EE74E56A0F7E2 /* mptRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 39CD38BA25B4FAB1CE0461CF /* mptRandom.cpp */; }; + C84BD96834DB9A533DD77B6B /* mptRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 771B12226357158CCC692D83 /* mptRandom.h */; }; + FBD5325967F095FAB012A68E /* mptString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8D3F737674016B1FC56788 /* mptString.cpp */; }; + A25FB3750EEF746017EB5578 /* mptString.h in Headers */ = {isa = PBXBuildFile; fileRef = 11DF9F29FD1AA393662DBB8A /* mptString.h */; }; + 79B21734E5ED77F7EEE2F486 /* mptStringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 883EBBE474A681B2DD1196C8 /* mptStringBuffer.cpp */; }; + 37FA9A9FA36A9D186C8917A1 /* mptStringBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA2BEADFB1EB2F0249CB204 /* mptStringBuffer.h */; }; + 63C1C45ACFFC241ED8F1A1AD /* mptStringFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32D37ED11E3B459F87A659B5 /* mptStringFormat.cpp */; }; + 8AAA00BFF61A0338BF397DC0 /* mptStringFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 39046168258154AB4EFE54BF /* mptStringFormat.h */; }; + 39F32B1B25717CB40E693A4C /* mptStringParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6877B1BCD491145E1DB424F2 /* mptStringParse.cpp */; }; + A076738B8C8973E4357350D1 /* mptStringParse.h in Headers */ = {isa = PBXBuildFile; fileRef = AF52CB081BE28CF324DE6D0B /* mptStringParse.h */; }; + BF136FE12BA330CC349F11E4 /* mptThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 9798AB1383D4AE7DECE6C674 /* mptThread.h */; }; + 53E63271BF75F45BC871D573 /* mptTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 223343AE0E6F461877815E0F /* mptTime.cpp */; }; + 7AF1819AE6B5808AAF1BB154 /* mptTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 2906C3D61557AE183EBB9CDA /* mptTime.h */; }; + DF3FBEB34BCF7F9E54CB60B6 /* mptUUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E6521581AA124C283B33CB9 /* mptUUID.cpp */; }; + 0678117B723C106B3BA24035 /* mptUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 35451523219600654AFAEE26 /* mptUUID.h */; }; + 47CF92D1330E3D4DDC90197F /* serialization_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B826E652A4A436EC8D9CF483 /* serialization_utils.cpp */; }; + 6E2012F35AB4079BC378614F /* serialization_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D73D10C89E3D38552024E0E /* serialization_utils.h */; }; + 0C5B673E781F662E418596F8 /* stdafx.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B74965A87C5819CB029705E /* stdafx.h */; }; + 6577D28151F4C5C47A71C6D8 /* version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4502D4D600A98F7E969B2D1 /* version.cpp */; }; + 0C1686D9F8675DC9E1869AD9 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B878772E7F5DCF130DF97F1 /* version.h */; }; + 0E624916FA74496FA35E265C /* versionNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 862D8FBAF2BC50A5FBB831BD /* versionNumber.h */; }; + 2DE0589D99505B16626FD59E /* libopenmpt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C50C87508CDBBB8314ABCCC /* libopenmpt.h */; }; + 8F394163FB74A126046A1EB6 /* libopenmpt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FEEF55B5EA571C8353C33099 /* libopenmpt.hpp */; }; + AEB9A2AD1A80FFC963DB8D2C /* libopenmpt_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D3CA7A7694FA700123984ED /* libopenmpt_c.cpp */; }; + A85BAA30949A54AC3D1D31DE /* libopenmpt_config.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C59D9F4301FE624CF67AF2 /* libopenmpt_config.h */; }; + D918B85A452A6001CE7BF240 /* libopenmpt_cxx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88C0EB6B743E3C055D36FA9C /* libopenmpt_cxx.cpp */; }; + BE6B27E92A328405738D1268 /* libopenmpt_ext.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D64E0E37977E03C2261BD29 /* libopenmpt_ext.h */; }; + 603E8FAECC4F375555A1C994 /* libopenmpt_ext.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AF95FC7F9B134D19840B0BB1 /* libopenmpt_ext.hpp */; }; + 0ECD7F4CFAA1C7FF235107FC /* libopenmpt_ext_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD16906969283810F279CA4F /* libopenmpt_ext_impl.cpp */; }; + 95F4201781C968CAAA78A8C6 /* libopenmpt_ext_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 24AEA1AB90BF49521911DC91 /* libopenmpt_ext_impl.hpp */; }; + D9596CF9C59816756E1BF3A6 /* libopenmpt_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 68E1BAE0D41C1BA4DD119833 /* libopenmpt_impl.cpp */; }; + 6090C4C34CCF6E3FF5514B71 /* libopenmpt_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F271E51FB627E140458FBA3 /* libopenmpt_impl.hpp */; }; + 4DB68EAF3960C4BE2231CCD9 /* libopenmpt_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C197FFB88DFDB17D13A6A7A /* libopenmpt_internal.h */; }; + 56151E22C289B37F8BD3008F /* libopenmpt_stream_callbacks_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A55432B09155C62ABA1D33AF /* libopenmpt_stream_callbacks_buffer.h */; }; + 0810D9F7742EEDC4BDFBF2D6 /* libopenmpt_stream_callbacks_fd.h in Headers */ = {isa = PBXBuildFile; fileRef = 9750BCAA83BB7CB62CD7E11B /* libopenmpt_stream_callbacks_fd.h */; }; + D7C64EEC4330E44ECC7392F9 /* libopenmpt_stream_callbacks_file.h in Headers */ = {isa = PBXBuildFile; fileRef = C6559EA8B22B25A69BD53FF9 /* libopenmpt_stream_callbacks_file.h */; }; + 9535D09C0152C28DCA292FFB /* libopenmpt_version.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F35288709CBAB79932D636 /* libopenmpt_version.h */; }; + 574FF480C3BFF6F98CDE7082 /* AudioSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 061DAD6CF299A0AF1B17A1C3 /* AudioSample.h */; }; + A5E6F1D89163E51BBAE0E52F /* Dither.h in Headers */ = {isa = PBXBuildFile; fileRef = 3438DA2BA0F144D629515FB0 /* Dither.h */; }; + 2E1D01A49A82942A235B3603 /* MixSample.h in Headers */ = {isa = PBXBuildFile; fileRef = A67796EF92C96DDF7BE8AAEF /* MixSample.h */; }; + F1376A46DDCB5FEE4690B9A2 /* MixSampleConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = C00C49BC2C7D4B35F59BC5BD /* MixSampleConvert.h */; }; + 9E1C41878A9A912073924FB8 /* SampleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD938BE39F49B5F8216ACF3 /* SampleBuffer.h */; }; + EF443784DBC2871DC4BA45B5 /* SampleFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4B9FB7EA650259338812ED /* SampleFormat.h */; }; + 1CAB2048088068FB312FA8F7 /* SampleFormatConverters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B74FC5BB785A40240D73642 /* SampleFormatConverters.h */; }; + 85509D0371E492ABDAA8EC5F /* SampleFormatCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D832DC109F42F3AD212AAC2 /* SampleFormatCopy.h */; }; + 94841FAA80D6F69969F533AA /* AGC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03C1D77D6F2F2DFDB818E8FC /* AGC.cpp */; }; + FBA2BAD3E7897CCB90DAE2E8 /* AGC.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8F466AB67255AABF7583E6 /* AGC.h */; }; + F481BB59E0D39249C9F2CF59 /* DSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63E2472DCF509DAC183A58AC /* DSP.cpp */; }; + 5BC8779F47AF3997F0FF9FB4 /* DSP.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD87E2A16BC8D6A1FBFBBA6 /* DSP.h */; }; + 5E123B28CAD63918933C6AE2 /* EQ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADD0B30599219F47C2858D09 /* EQ.cpp */; }; + 058E11A671477C50FAA6962A /* EQ.h in Headers */ = {isa = PBXBuildFile; fileRef = 342C2EE32052F84909987D15 /* EQ.h */; }; + 129C12577EB675F8C7D8858C /* Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 614172B44D2834ACF6789AC9 /* Reverb.cpp */; }; + B9EB3F37257B01222E77E239 /* Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = E810D732D44CDA9C3D5FF293 /* Reverb.h */; }; + 0A8AB00D76719B037F5F9D7F /* AudioCriticalSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0287C6D7EE1ABC7F57DF1534 /* AudioCriticalSection.cpp */; }; + 31C7FE319DE3F02266BB5D90 /* AudioCriticalSection.h in Headers */ = {isa = PBXBuildFile; fileRef = A013DD508CBC4480B55260FF /* AudioCriticalSection.h */; }; + 564BCC1242F433426B8A4FC1 /* AudioReadTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4599282EB1FEBBB43AD75D8D /* AudioReadTarget.h */; }; + 15B050B4011817826A832B98 /* BitReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 642FCC0BD0F3CAFB9959FBC5 /* BitReader.h */; }; + 11B2C3A1FDC4C3FAA6AEA0E7 /* ChunkReader.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C761210C57230C15530424 /* ChunkReader.h */; }; + 613AF4AF4DA2BA7DB60DCF93 /* Container.h in Headers */ = {isa = PBXBuildFile; fileRef = F96BF7C66530F6B62E962681 /* Container.h */; }; + 58F6331CC4BC90380D181F9B /* ContainerMMCMP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E766CB6FD379CBC87C63A8B5 /* ContainerMMCMP.cpp */; }; + C2AB5089AE54B8B8D7EAD337 /* ContainerPP20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3106A8899D6B3B102644DDE8 /* ContainerPP20.cpp */; }; + 3C696864A8A4C827B19945B7 /* ContainerUMX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B5FB83377C77E01E0329317 /* ContainerUMX.cpp */; }; + D7F10A90432D6B534C22E8E2 /* ContainerXPK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 465B516D32C3173B9B2E2C51 /* ContainerXPK.cpp */; }; + 5007568E3C6F1C5CA5DA3072 /* Dlsbank.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71325B6DDDF6595DA65C8A27 /* Dlsbank.cpp */; }; + B73740D4A3B43317CC31342B /* Dlsbank.h in Headers */ = {isa = PBXBuildFile; fileRef = 06163BDD72CFA587FB2EC061 /* Dlsbank.h */; }; + 71B91D3A5D21E407C68CF81D /* Fastmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40EF5A3EACB3592E75198AF8 /* Fastmix.cpp */; }; + 9733C538039958BF8C71FA97 /* FloatMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = 861D6F9C726F468C5B8E839C /* FloatMixer.h */; }; + 08D80A8DF48072BC1D178E3B /* ITCompression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B7EEDD9E23547125AC2C13FE /* ITCompression.cpp */; }; + 0670191FF2ED69B8DBE52750 /* ITCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7AC939EA942CDB33B73C6F /* ITCompression.h */; }; + 022E3BEAEE9501B8570116CE /* ITTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3105D8099DC9D6F9662F07C4 /* ITTools.cpp */; }; + E909E8E6D586DB29FE03DC3D /* ITTools.h in Headers */ = {isa = PBXBuildFile; fileRef = F840982064FA02CBED591DA5 /* ITTools.h */; }; + E1941AF34D7C05E9566A0765 /* InstrumentExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 107FF285FC12E82D65D741E2 /* InstrumentExtensions.cpp */; }; + 4F87BD6DBBA1200F04C430A3 /* IntMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EF2A0396AD96231132AC94E /* IntMixer.h */; }; + D787D7D343ED6A5ACCC50C33 /* Load_669.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF543CF79BA613E784C550F7 /* Load_669.cpp */; }; + 08C49551742929D8FD01CBB0 /* Load_amf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5763666743B53D572CD47A67 /* Load_amf.cpp */; }; + 97AF7D4A031511D18CEDB2A9 /* Load_ams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8619EADD726BC1CD5B8AFEDD /* Load_ams.cpp */; }; + C8EE6A563454FEDCBD2CA0B5 /* Load_c67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17D6E5F80328BDE8EC46FAF8 /* Load_c67.cpp */; }; + EDF75E64595DF2EAE23594C3 /* Load_dbm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C5451F608A628E6F1C465F6 /* Load_dbm.cpp */; }; + B03890399C4B909245356D7F /* Load_digi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E8D68A4C54664C375D622D4F /* Load_digi.cpp */; }; + 4CB0770CB8150B9341EEAC6B /* Load_dmf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B954E5B07E7254BF005635B /* Load_dmf.cpp */; }; + 9B8CE70A07F27A9190CA1C6A /* Load_dsm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0AC4B091F6158881DF34C591 /* Load_dsm.cpp */; }; + 16DC72A602EF72FFABD84FEC /* Load_dsym.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 855AF850F1E9B93BFAE59A53 /* Load_dsym.cpp */; }; + 805840A2ECBDD32875967501 /* Load_dtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF4C0C8FBB9EE37EA4BD208F /* Load_dtm.cpp */; }; + 4DFAB739B95F4BC04238ED98 /* Load_far.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65E5D7145137AF043A56EC14 /* Load_far.cpp */; }; + 9D7C0CC309E29F4992BA4122 /* Load_fmt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC2A9D83B87C7473A19BB183 /* Load_fmt.cpp */; }; + 300087E79C651A6E253EBC46 /* Load_gdm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F66EF026BB8C6F254D70303 /* Load_gdm.cpp */; }; + 161E7DCC828310530B5CB22B /* Load_imf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5BC1BD8910EF3C77A2D30D8 /* Load_imf.cpp */; }; + 9988477985F00D47EE5B225D /* Load_it.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 68A5B415D469B3059DCFE3CF /* Load_it.cpp */; }; + 426AF08BAECF831237A825EB /* Load_itp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A48A8BA269A7FAA0FB9BCBA /* Load_itp.cpp */; }; + 749CF6D7E0018A5E69DA2B37 /* Load_mdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 434817612F9AEE5018B92B61 /* Load_mdl.cpp */; }; + 0F0737117B6CCA9704456C70 /* Load_med.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEE598F3EA3770E3D356ADF3 /* Load_med.cpp */; }; + D53337084199CA8ECA716C67 /* Load_mid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 047FB27FF0D0896FD9EFC67F /* Load_mid.cpp */; }; + EC695FDA58CFF260E1A79439 /* Load_mo3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBCA7333A71C4B23903B8833 /* Load_mo3.cpp */; }; + 160E18618273ABE70B4C4DC0 /* Load_mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E37F1FD7A89C8ED63A805FE /* Load_mod.cpp */; }; + 8B31F07CF7968303806F25DC /* Load_mt2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9292D8E6E469C8CF03A7D8 /* Load_mt2.cpp */; }; + C8AE806C341414F3BDECB5CB /* Load_mtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 179663BA03E83AAAEC0678BA /* Load_mtm.cpp */; }; + 88964437741495D05D0C5368 /* Load_mus_km.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77F9E36EE31347102C3657A4 /* Load_mus_km.cpp */; }; + ACDC9E5E184232E5A11AD4BD /* Load_okt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B85D09E67D7A78E50F6E49E /* Load_okt.cpp */; }; + 80416239ECA6F5BF757F9798 /* Load_plm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B820E91FA472C00F8D91FD1F /* Load_plm.cpp */; }; + 69863CC3D5EBCF495EC47122 /* Load_psm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18E520090437F8F8ED553509 /* Load_psm.cpp */; }; + 0C9B62277800F6AD01D99786 /* Load_ptm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DBC74BAEC719239EB03860AE /* Load_ptm.cpp */; }; + 30B9E7DA9C1E7B6125F71C3A /* Load_s3m.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F7FB83F6BD18F2F54F0CC3F /* Load_s3m.cpp */; }; + 90D49189FC3925108512C7E8 /* Load_sfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFFE6B07CB5043F7B46F8007 /* Load_sfx.cpp */; }; + CC18DF7B387E7202C15614DB /* Load_stm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8438A37B708A7A6B59A9B77B /* Load_stm.cpp */; }; + D1EF273F3D55BBC5C62D5D9E /* Load_stp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 80CD02516C1FDA40553E1751 /* Load_stp.cpp */; }; + 9572CE6281F01EFC6AE8DC93 /* Load_symmod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64D9D395D0F33637191647CB /* Load_symmod.cpp */; }; + 2C2D21CD9892B453216B562C /* Load_uax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB85FE35E7D7D525D0F61236 /* Load_uax.cpp */; }; + 951256050178E98B8A508B64 /* Load_ult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4259BD3B07772C39996AFD3 /* Load_ult.cpp */; }; + A77F529413E5E51A9CBD87F3 /* Load_wav.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F2A39BA6B7C10AA549B4DBA /* Load_wav.cpp */; }; + A05158AD8CB91E7BF5243391 /* Load_xm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEE0A0B7BB209FB44183AC5 /* Load_xm.cpp */; }; + CD2C63F5B9A95638E226574C /* Loaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C053551C8BE9FFB511EBAD5 /* Loaders.h */; }; + 581CDF59C48CE1D28DAB5B5B /* MIDIEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6785B21F5302A6627C7FA676 /* MIDIEvents.cpp */; }; + 7FF3303FEB58C4C57431669E /* MIDIEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4C21795A9EF86843BD3579 /* MIDIEvents.h */; }; + 3ADBE865A64BEBDE6F6A6567 /* MIDIMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7BE6C98A6763BDCD90E0BDE1 /* MIDIMacros.cpp */; }; + E19199CE4DF72C55D6CFCE2D /* MIDIMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E5528D7C372A7D6556678D /* MIDIMacros.h */; }; + EAA3E398D6B6E3F17FA0C0DE /* MPEGFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D9ED4312457D05FD4E79E614 /* MPEGFrame.cpp */; }; + 518EEF623DF6B530A661CA46 /* MPEGFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 20389CD88CFC9AC85562CB92 /* MPEGFrame.h */; }; + 7F229F586B8A6526D4F5793C /* Message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8EF764C7FABB63B7C3219481 /* Message.cpp */; }; + FDD1BB8DE94EAFD012CCAFE4 /* Message.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F89A5281B105FD0A1120D7 /* Message.h */; }; + D787ED4843C34D0C4CB8CA9B /* MixFuncTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4631BEB2329984809B049996 /* MixFuncTable.cpp */; }; + BE4BEBBB2ABCED34F3DA67BD /* MixFuncTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DFD03CEF979F71022F7F724 /* MixFuncTable.h */; }; + A3253E4E8F77153E7896524E /* Mixer.h in Headers */ = {isa = PBXBuildFile; fileRef = B2BCAA171E2B00976714BB96 /* Mixer.h */; }; + D669200642A580C94B9AFD58 /* MixerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = E517CDE1D17F93AF3AEBA7C5 /* MixerInterface.h */; }; + 463FA478B2AFA6F17BCE207A /* MixerLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE848B1DAA017F60D37E7F74 /* MixerLoops.cpp */; }; + ED82D4E659E8676DE2C00946 /* MixerLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CFF639B08513B8BF16F789B /* MixerLoops.h */; }; + 4EB71B563A60838563F69E04 /* MixerSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DAAAE58A90F42DF32E8E3B7 /* MixerSettings.cpp */; }; + B529BB21A1A70BBB8A9FC952 /* MixerSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 849C09A3F0B66C4439D97CD8 /* MixerSettings.h */; }; + 1580394E81F03BC74A0FB64F /* ModChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 045F6388F0DB56CB195957DF /* ModChannel.cpp */; }; + 737FFC6DDFE48FF468BD31CD /* ModChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = CB1AA5B1B76C7CA1A08BB9B1 /* ModChannel.h */; }; + 50F162093C9ACA386530E6B7 /* ModInstrument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FF1AA70A6B803A91F458DC69 /* ModInstrument.cpp */; }; + 37FB876E2379D8070C71969F /* ModInstrument.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F44A3F320FAEE07B31BE74 /* ModInstrument.h */; }; + 1D86FD170999FD70B282DA5D /* ModSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CE4D72698739911A16F7A29 /* ModSample.cpp */; }; + C447B519B0AF7BE7191B90FD /* ModSample.h in Headers */ = {isa = PBXBuildFile; fileRef = B37D08211F420711E8A737DB /* ModSample.h */; }; + 58980C8644165D1F2D0E1BB7 /* ModSampleCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 90A75BB3FCC1BE5445E4CEE8 /* ModSampleCopy.h */; }; + D165DFACBDE32F46A6DBEDDD /* ModSequence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20D734048CF197A5D513A839 /* ModSequence.cpp */; }; + F872C5B2E485C50B8D6FA2F8 /* ModSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = 279C5659932B18449C27F95B /* ModSequence.h */; }; + 4707EC653359C3551C780066 /* OPL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D60758F44276AD738B5F6873 /* OPL.cpp */; }; + EEDC10E1DAC3D2D8831439F6 /* OPL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D055134C9E85F74D2EB8DB0 /* OPL.h */; }; + A01C99AD8C2F9906351976F3 /* OggStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D88489B544144BA04D102CB8 /* OggStream.cpp */; }; + 8761638B73C92959DC343E6F /* OggStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B13BD202763AC2CBDB6A8C /* OggStream.h */; }; + 4EAA73AC3A2767EF63A46703 /* Paula.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DCE6F7FA987DA2932E7F403 /* Paula.cpp */; }; + B57A3B41A1CC12318AEB4F41 /* Paula.h in Headers */ = {isa = PBXBuildFile; fileRef = 841E48B2F08C9D3139765831 /* Paula.h */; }; + AFFDAB839B65725104D18667 /* Resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = BE1400C42AD9FEB3F33E2F7E /* Resampler.h */; }; + 2063983B8CD39AB455F2143D /* RowVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5858A90E44D59C516D529D65 /* RowVisitor.cpp */; }; + 47E8D992B34D6D193C260FF2 /* RowVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3624E46B2276BB5B0B95F86B /* RowVisitor.h */; }; + 409D1EACAC02B23235DB530B /* S3MTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F99FC9A7BEBD38A640A119B /* S3MTools.cpp */; }; + E7615034537CB3D59C9EC369 /* S3MTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CE421702B5040FAB056B2C /* S3MTools.h */; }; + 113B8D15FDCE82BD6693DC71 /* SampleFormatBRR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E09B95BF4C0C9838152B12C1 /* SampleFormatBRR.cpp */; }; + 5AB2FDC9C6C3A5704F1538B0 /* SampleFormatFLAC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5289B72D3E0708C727FFC55E /* SampleFormatFLAC.cpp */; }; + 9637427A82CB3722EB8F91D6 /* SampleFormatMP3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 457124B5B1E1262E7A00A1B6 /* SampleFormatMP3.cpp */; }; + 7F4D102F6B23972C54CDB17F /* SampleFormatMediaFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E1850967A8A92B2C31EC836 /* SampleFormatMediaFoundation.cpp */; }; + D18E9AC13DA04268C6F1D4A7 /* SampleFormatOpus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 809B76856C19C71E551185B6 /* SampleFormatOpus.cpp */; }; + BF9261DBAB26578314EBB037 /* SampleFormatSFZ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEEE1AF83A5F1D71037E97F9 /* SampleFormatSFZ.cpp */; }; + 7A37F5A1E653E792AF2B5400 /* SampleFormatVorbis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72F466285E9DCE578733EAD6 /* SampleFormatVorbis.cpp */; }; + DAD9920DC682FA3CEF1816BC /* SampleFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4905B7C9B56A4A503E43EC28 /* SampleFormats.cpp */; }; + D8487DCD44AE1054CD86B22C /* SampleIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27A6836F13F85A5FFC16986F /* SampleIO.cpp */; }; + 7F475F96EB61C2373484D2CB /* SampleIO.h in Headers */ = {isa = PBXBuildFile; fileRef = AED4EDD49ABBAFCC430C16EA /* SampleIO.h */; }; + AD9ABDDA19B5207C62D73010 /* Snd_defs.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF3716B08DA3363B12A9A80 /* Snd_defs.h */; }; + 6552F40C51BABADABA25CFF0 /* Snd_flt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D71C386E935C276B29BF240 /* Snd_flt.cpp */; }; + 3FB1AD0FABCB10B1F4ED2045 /* Snd_fx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E26634B5A0D2543035E8B60 /* Snd_fx.cpp */; }; + 8411D42170799AEFD9E4AE05 /* Sndfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 732F922ADFF3901AA859C1E4 /* Sndfile.cpp */; }; + EB248E1CD7A1815F001F8273 /* Sndfile.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF2DE1426AC49BFAF0B6499 /* Sndfile.h */; }; + B64A62092265C5AA6B87D53E /* Sndmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85392DCF7120EFC61A7155E4 /* Sndmix.cpp */; }; + 088467B4F42D9DC3DDFEA4DE /* SoundFilePlayConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A91DFCF615E458135E3FE775 /* SoundFilePlayConfig.cpp */; }; + 6FF9D2045B387D8004BB59B2 /* SoundFilePlayConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEBE378AA26443CB31BC1CB /* SoundFilePlayConfig.h */; }; + D277A8AE3E920B5087B41BE4 /* Tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21C53F500DAC0148B6FC6765 /* Tables.cpp */; }; + 79D72BA4E566ED8EEE62CEA6 /* Tables.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4F0A194E0F30BFDF20B03 /* Tables.h */; }; + 5CF48166485C4834B1C75C4A /* Tagging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BEBF812B7AFF702801528CD /* Tagging.cpp */; }; + 9A88161A86050A5DAF820A71 /* Tagging.h in Headers */ = {isa = PBXBuildFile; fileRef = 92D834D0FE919F7A87F1B954 /* Tagging.h */; }; + FAAFAE98E61775664F83897C /* TinyFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 296C1CDD95301BCD5E964B97 /* TinyFFT.cpp */; }; + E1AD225CCD2A169FF6A716B3 /* TinyFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = F08926175C4391C1E5A2AB9B /* TinyFFT.h */; }; + A5E66D91114C01189A24A3F0 /* UMXTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D42F6A6DC081415DA9A07E6D /* UMXTools.cpp */; }; + 0C0E04DE7828677FC14A7713 /* UMXTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0F5CBE07F61DB6B04684D3 /* UMXTools.h */; }; + 23C7C81E0F70304E38064CCD /* UpgradeModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B05F1FAE76A84817043265A /* UpgradeModule.cpp */; }; + 56A858D9C20DEC5F4BE68D38 /* WAVTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5DEC734D1309F24BA4FDC34 /* WAVTools.cpp */; }; + 7DAF40A4E9C9A34532ECB3D9 /* WAVTools.h in Headers */ = {isa = PBXBuildFile; fileRef = ECC5B05DD8AC725581FDD872 /* WAVTools.h */; }; + 1DE1C529095F16C3F256D45A /* WindowedFIR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC12C2A4582D2546A14F35DA /* WindowedFIR.cpp */; }; + 44ABFCC430BEFC1DD9A7D90A /* WindowedFIR.h in Headers */ = {isa = PBXBuildFile; fileRef = F3748A1D5F044C0868002D20 /* WindowedFIR.h */; }; + ACE20F50984AD61D01B6EA33 /* XMTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64F93AC4D0BD39B499236A7E /* XMTools.cpp */; }; + 138CD363FF08C7A62886C7BA /* XMTools.h in Headers */ = {isa = PBXBuildFile; fileRef = E240B5764EFA1F21D7593AFB /* XMTools.h */; }; + 171ADD4B837F70D20C5812AB /* load_j2b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 06F4DC88F245B478DB64F188 /* load_j2b.cpp */; }; + EF0B0CA25B28FE9224006B00 /* mod_specifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EE9FE588A926688B3288207 /* mod_specifications.cpp */; }; + 56333BD2C244E3784B9675B8 /* mod_specifications.h in Headers */ = {isa = PBXBuildFile; fileRef = E51808F3D196588CBA8E1624 /* mod_specifications.h */; }; + D63067A542A1691E0BC0E3A6 /* modcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E3CBD933AB9B0D66336B1EA /* modcommand.cpp */; }; + 7DD00DE0E935A166720E433F /* modcommand.h in Headers */ = {isa = PBXBuildFile; fileRef = AC92A20798E479F78103B707 /* modcommand.h */; }; + 1FF9E65D0B7737F7F46EF58E /* modsmp_ctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEA171F21ABCD49363DEE427 /* modsmp_ctrl.cpp */; }; + C6DA9336B2ED938F5BD7707C /* modsmp_ctrl.h in Headers */ = {isa = PBXBuildFile; fileRef = 356B2321A1FAE40BAAF6C523 /* modsmp_ctrl.h */; }; + F090EFE05C55EED025BB1E9B /* opal.h in Headers */ = {isa = PBXBuildFile; fileRef = FF6B08FBEBBCF33C1421E2FE /* opal.h */; }; + D6DE333EC246FA0B2BB20E22 /* pattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E33DC6DBAF7DA5D835D0B28 /* pattern.cpp */; }; + BD7596D5A9F28918D26F8A2C /* pattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CF80A74B8B1751E411190F8 /* pattern.h */; }; + FD8E57FB69A0FFA1F2F191E1 /* patternContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CD09BE2184EEC7B0146AA13 /* patternContainer.cpp */; }; + 6462A3F1D028000E19848E70 /* patternContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 731B98FE5F2E985708187544 /* patternContainer.h */; }; + 0CFE87AFF8BD185461DB005F /* DigiBoosterEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB844A6967A13C5A3079A9C7 /* DigiBoosterEcho.cpp */; }; + 4AF8572B36CD9FDE5F7CDFDA /* DigiBoosterEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = B94C55CD255EFD73AEAF8FB3 /* DigiBoosterEcho.h */; }; + 9DB270B189F11A2D3274F75E /* LFOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ACAFEFF218EB4FB621E0CC45 /* LFOPlugin.cpp */; }; + 443653FE30CA48A6998EA25A /* LFOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 330BA2329F7BA4AB689A1E34 /* LFOPlugin.h */; }; + 63373F114FE0A6407876C2BF /* OpCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3289175E9EEEAAE427C74CBD /* OpCodes.h */; }; + DC1D804FC8F2C702F1A107FF /* PlugInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B2F79D67740217D0092B3BC /* PlugInterface.cpp */; }; + DA39264CC6E35B5BAFB46376 /* PlugInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 89F0F5FAF5B652173E12E179 /* PlugInterface.h */; }; + 18FBEDA104D035552D7F7551 /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C7D6FC9A33E8A441BC393781 /* PluginManager.cpp */; }; + FFD4B607EB7EEC16D44FF431 /* PluginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EC05A9BFA86B7B743E2451A /* PluginManager.h */; }; + AEC692E89A9BDA9BC34A1A98 /* PluginMixBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D8CD877099E801E92EF125E /* PluginMixBuffer.h */; }; + 0011303AECBA6549D58B6D64 /* PluginStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = EF376D1A5BFEC936A4595899 /* PluginStructs.h */; }; + 6505A6E4D12198D59AF90443 /* SymMODEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54A183C0404AEBEF69E0066F /* SymMODEcho.cpp */; }; + 4C57FC9FB868A44641BA3686 /* SymMODEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6B6FA307E9BF3CF0E07DD4 /* SymMODEcho.h */; }; + D5D1072741EEF9170AC66685 /* Chorus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4E70722B0906F51D9268BD0 /* Chorus.cpp */; }; + BC47A0E928594890B1AADACF /* Chorus.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B554F0D77D39FA660CB5D3E /* Chorus.h */; }; + A92C76B2159FB8CE5E33EE52 /* Compressor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E409EF2D23B46AD6A5909C /* Compressor.cpp */; }; + 90AEC034FC95AB2A0584ADA6 /* Compressor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F0FF7854BA3EC2DB46746E2 /* Compressor.h */; }; + 8FBC26157B916EC8A440AEC4 /* DMOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE1112E34A23BA89D3744CC9 /* DMOPlugin.cpp */; }; + B6CC12F4A27648038B47501E /* DMOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = E549E809511045269A6BD388 /* DMOPlugin.h */; }; + D522C3AC410AAEA24AF8AF1E /* DMOUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8484D9DE7018CF86D9DC283B /* DMOUtils.cpp */; }; + 8AB0E0FCF6CCD2EDBFA43F5B /* DMOUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CBCA9485B773FCB4E0091834 /* DMOUtils.h */; }; + E5F7C7CE516A0AEB9AFE3F6F /* Distortion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54CBC7A2400A721EE98C4E50 /* Distortion.cpp */; }; + CC7A6E2E3862592441505BA0 /* Distortion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B46492F07DA3ED7709E988B /* Distortion.h */; }; + 798F7B85E5A0232C6EF2B56B /* Echo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2893628C1411B325FD0871BD /* Echo.cpp */; }; + E01395F84CDAF11495358077 /* Echo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FEF99205B029A7904EC7666 /* Echo.h */; }; + 347081FD201AB70C09EBBE27 /* Flanger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC8D4BB45854A8D0A1AF3633 /* Flanger.cpp */; }; + 9BEAEB238729969F30AC72D1 /* Flanger.h in Headers */ = {isa = PBXBuildFile; fileRef = EA70EA5456AC4A185FA1C7A7 /* Flanger.h */; }; + CBAB7E1837C8700900A0DD76 /* Gargle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA2F3B8AE6D8A2B90F6FBE38 /* Gargle.cpp */; }; + 322C8C709E3D3417278FC656 /* Gargle.h in Headers */ = {isa = PBXBuildFile; fileRef = 411887C82D96D761168E95F9 /* Gargle.h */; }; + 6135A0464DF530EBB61219F6 /* I3DL2Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3093C85D9CAFBA4E658727BC /* I3DL2Reverb.cpp */; }; + 5F56E0BE4B2B287274DA676E /* I3DL2Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 378775ABA3981D522CEAAF91 /* I3DL2Reverb.h */; }; + FF1658E2EBC08DF1D491950C /* ParamEq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8EC2AA59FA88077643E495D8 /* ParamEq.cpp */; }; + A662C47092A16EEC3B244B1E /* ParamEq.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F6F9FD81315AC18A26D750 /* ParamEq.h */; }; + A8D0C0959490513AFDAD3945 /* WavesReverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17463232836224234C3A9190 /* WavesReverb.cpp */; }; + 0F8F7998FB63C14B24130148 /* WavesReverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E543748CA65DFEE53B7712E /* WavesReverb.h */; }; + 0C487A597862DDFAC184ED8E /* tuning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4C5B491B0AC768959FDDCA6 /* tuning.cpp */; }; + 3351F8A99FE0B994A8DC9AAC /* tuning.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A201180EDE048277F01C79 /* tuning.h */; }; + 7C8C934CE89D3BF371EFCD32 /* tuningCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BA23431372085CA20184362 /* tuningCollection.cpp */; }; + 325045779EB5D8FD278E7AD6 /* tuningbase.h in Headers */ = {isa = PBXBuildFile; fileRef = 412D19EF2D7FF0DE169E2DEF /* tuningbase.h */; }; + 05D9DB19719F3836BAFAC698 /* tuningcollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 74A9B22760BCB28009A68F6D /* tuningcollection.h */; }; + B9B4B1A7A55D19D7CEF33456 /* algorithm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C8D83AE1343ECE67BD167040 /* algorithm.hpp */; }; + DF104CF8CB234C51740D293E /* alloc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AE2D12DB1ABDD3C523B9B4DD /* alloc.hpp */; }; + 7D8AC8E0E971B3D6F25FB552 /* arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2C83CD5C1817C30481DB1CB9 /* arithmetic_shift.hpp */; }; + F75AC333E36DC38C8C57A079 /* array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C6C8B4D9325876C43B5457DC /* array.hpp */; }; + F09F01D0DC07C89D4573DCB3 /* bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5F0AC635CBCEC4259434F5EF /* bit.hpp */; }; + B586C6B721A3B8A8EA7A2516 /* check_platform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A410AA6490B91194B94F2D13 /* check_platform.hpp */; }; + 82A986F96E69179ED786FFA8 /* compiletime_warning.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B1AEFC671DCBEE58E6A25BC6 /* compiletime_warning.hpp */; }; + 308EB6EE1C38ECFD0509F418 /* constexpr_throw.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1FB774638B7DD17FD4D85FE2 /* constexpr_throw.hpp */; }; + D2FFE1473E70E4C0078F5E49 /* detect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A1D4208A8D5114CDB6CE14E1 /* detect.hpp */; }; + 255A60701104967FFAD49D9A /* detect_compiler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4F56CD960BCC9F5A9175858 /* detect_compiler.hpp */; }; + 26D64D23126A43CB7B2E9D7F /* detect_libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D5B53E0F412641880A45BB10 /* detect_libc.hpp */; }; + 986A5C1B84A906972D2CE3C8 /* detect_libcxx.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C7BE1EAB33FA7E6E3CEFFBFD /* detect_libcxx.hpp */; }; + D2CAC424BE732C54E70948D3 /* detect_os.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 417B383AADE0CBC036B96D99 /* detect_os.hpp */; }; + D129BB35BD6865B166EB41E3 /* detect_quirks.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 60D6116ACC11722DD506EFBC /* detect_quirks.hpp */; }; + 91A925397DE8CFB4266BACE6 /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 207E3D6D8CB99D3095AE1AC0 /* floatingpoint.hpp */; }; + 43FC3D1F2F7A8EB818724C50 /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 521EADD8BE38107A075B200E /* integer.hpp */; }; + 5C593294C8C9340D91E8AE95 /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EB8F06BED70CFA00008AFA14 /* macros.hpp */; }; + 43223305AF87C68B38606864 /* math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B230D6779E82AD6787A1EA77 /* math.hpp */; }; + 54AB36CCC01B3945893AB3CD /* memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3C619D9CF430D1CF8C00D30 /* memory.hpp */; }; + 81C007366D696F6596FF8AE4 /* namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 90676081FCCCF30785A595E0 /* namespace.hpp */; }; + 89F2A3707570F4095E68B2A1 /* numeric.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D890886444ABEB058DCDFB99 /* numeric.hpp */; }; + 39E70BA325655C3C0E5D1AD4 /* pointer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 88D7487BF4F1AB1C3D14BCB0 /* pointer.hpp */; }; + 6149B98CCD5A613356ACF372 /* preprocessor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 107C4246FCF992DFE5F15077 /* preprocessor.hpp */; }; + AFD357709B1202EC4495DE1D /* saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7E5D27C1EA988784F38D0414 /* saturate_cast.hpp */; }; + 85EB3CADF1072F9EBADF9B0B /* saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74338A1960DCF14889720DC8 /* saturate_round.hpp */; }; + FE3626F86AA7287133C6A2F9 /* secure.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4DE0AE57395DA29A62DAA2AE /* secure.hpp */; }; + 92A49466FE8B7F5C077A81D8 /* semantic_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 21BC96400D508CE87614E69C /* semantic_version.hpp */; }; + E4C2DBE6D06C11F6B93D1911 /* source_location.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 532BE545BFF14162084DD0C4 /* source_location.hpp */; }; + AFB21E5A1B18B2E0A4F053B9 /* span.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9ECD7E188A1F5608733E9318 /* span.hpp */; }; + E3915D8FCFBEA9C0F89F4CD1 /* tests_base_arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B220E66A1E8A7BCDA7CD2978 /* tests_base_arithmetic_shift.hpp */; }; + 3DCE4581A98BEEB73256DA1F /* tests_base_bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6C1695ED58C0CAFC4191D217 /* tests_base_bit.hpp */; }; + 6AB8671D56232829FF3E8D8E /* tests_base_math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 59102DB7C5F717ADCEE51929 /* tests_base_math.hpp */; }; + 15A1BB5F811551BD4A5F9ECC /* tests_base_saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 04CD2A2AF0CDBEA419962B29 /* tests_base_saturate_cast.hpp */; }; + CB360959B7384D69A0BB4362 /* tests_base_saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23EA70F68F0885C3D8D58AD5 /* tests_base_saturate_round.hpp */; }; + 592571B0C56435C9CE44FCE0 /* tests_base_wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8802D44F74EE6BBFDD642B12 /* tests_base_wrapping_divide.hpp */; }; + A5C73B0691458C9F7A3D4A37 /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74C443CAE0DEA66B2901B7FF /* utility.hpp */; }; + F9CBEFB0E549404ACE41FEE1 /* version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 48C43AE9B4DE9D8AFD00AE1E /* version.hpp */; }; + 51C609273D703F3626414751 /* wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0160B270CDD67435538F6A5 /* wrapping_divide.hpp */; }; + 3E119FFAAA4CFFBDB3417C4D /* base64.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D7EC34B39E68919A2519E2F /* base64.hpp */; }; + 53E2A2D93F769881A83AF235 /* base64url.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E23113E34EA2155C17C18FE4 /* base64url.hpp */; }; + A2CFADFF8EE2AD5837CC8A45 /* hex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 91E6DDC4FD759FAF067280C7 /* hex.hpp */; }; + B9BD03EE257BAC24AE45988C /* tests_binary.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 686844B754127AC63DE381E1 /* tests_binary.hpp */; }; + EDBC5076D9CF50CF82B92DBC /* libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC98C9E068288BCB71246CE3 /* libc.hpp */; }; + AB7ABF3F17E052C6A0B8F49E /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1AA8475B06FA1E4BEF185C5B /* mfc.hpp */; }; + 829E8753EED9E716F7CE64A6 /* windows.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 11B1C905FD1890D36684A4E9 /* windows.hpp */; }; + 2CEF2122980985C3E12B9557 /* crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BBCE0F827A3A2F0D0F3080E /* crc.hpp */; }; + FA426104665F53F52F37C062 /* tests_crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9CDD777B5763FA7DE0C5B26 /* tests_crc.hpp */; }; + 69B5D4375549CADFBE0D2494 /* exception.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 383FD9F9A4AFDB726DCE55FB /* exception.hpp */; }; + E0F5C6F24C66C96B158543F4 /* hash.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EF49E2F2DBC6D5350444D649 /* hash.hpp */; }; + 8ABC0B0C76CF0B651FB9E851 /* jwk.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7922327FE5B1F369EEADD481 /* jwk.hpp */; }; + CDEE566A39ACFFA0C276EB08 /* tests_crypto.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC9CBB2BE846F13AD117F955 /* tests_crypto.hpp */; }; + A9C187FD95D487563EBE6443 /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 38B85F9EA4472189AD4302A1 /* mfc.hpp */; }; + E968692ED5129F3DBEE3A658 /* nlohmann_json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 38BA5C18A480B934EDDB4797 /* nlohmann_json.hpp */; }; + CC3FEC35B8E92145A1BA2960 /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BF71195A7BD6EB1F018FD13 /* floatingpoint.hpp */; }; + 9548A79B81F10ECBAA872A4A /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 249351A190F8E42719D18600 /* integer.hpp */; }; + 4A97FD19B661CF74FF67CE99 /* tests_endian_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 99950A86852C4D3B2EE1C33B /* tests_endian_floatingpoint.hpp */; }; + 7CE82599E851BBFB719569A6 /* tests_endian_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4B9CFB3337728231201C9D84 /* tests_endian_integer.hpp */; }; + 4AC6CFE5B6381202FFCC4786 /* environment.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 99C6469B8505F1162E88CD48 /* environment.hpp */; }; + 20123C968CA59D44958C0DFB /* exception_text.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EF07816EDBC7111344E5F91D /* exception_text.hpp */; }; + 28F3E6D714C96DD5FD728828 /* default_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1750259C83C267B8CC569D3C /* default_floatingpoint.hpp */; }; + A0B867458C78F8E9F595E0F4 /* default_formatter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0F5372197B6F640A4447D177 /* default_formatter.hpp */; }; + 9CFDBFAF88D20763B181475F /* default_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB369E23374846CAC099D809 /* default_integer.hpp */; }; + 1E8B6E898A72597F93605BFB /* default_string.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2D5B373F19EF2CE782B3869B /* default_string.hpp */; }; + F828633CE4D1CA6B0D68E6EA /* helpers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7E993BB134F27429C27C91A /* helpers.hpp */; }; + ECBDC71CD8662F4C01FD4ACB /* message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B96D63C87FB69C310D40B9C /* message.hpp */; }; + 32497A339E306529A71E67A5 /* message_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C1FC9ACBAD9090731655EA27 /* message_macros.hpp */; }; + D524DC3C41603C004A55B98F /* simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 84373932709FFFFFD90A1416 /* simple.hpp */; }; + 4B857B34B74D49B880DE51CA /* simple_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7A680999663D514C8FEC9048 /* simple_floatingpoint.hpp */; }; + BD36BEB8291EA9AE320CAB2A /* simple_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6C873621581B2CC9C1DF857D /* simple_integer.hpp */; }; + 5C579C6C489646E8F118231A /* simple_spec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0BA1026A77DC622D80D1DFBC /* simple_spec.hpp */; }; + 4C05229AB86EB7FC41B265A7 /* tests_format_message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B77EE03074D7501F0F68F54 /* tests_format_message.hpp */; }; + C15AC10EAD46597E16BD18D1 /* tests_format_simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 421E02E0AEE6CF637777D875 /* tests_format_simple.hpp */; }; + 49655B45B5CAEECB3EA390A4 /* json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F8F7E0CBE449B8BBCD68F5CB /* json.hpp */; }; + 7E860F1EEAF61197B3158C1F /* mutex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CD7F285BB9FC1B9EE2791CB2 /* mutex.hpp */; }; + 79CA8ED2659FD6858E4E1682 /* windows_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8845F536F4569DDD7DA82F1D /* windows_version.hpp */; }; + 5DE07DCEC9A84B5292395464 /* out_of_memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C10F0FB38E537AF619477AB /* out_of_memory.hpp */; }; + EE7AD6F85AEBD871230A53FA /* parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DEE388F296B2CD252E82CE6 /* parse.hpp */; }; + 85BF1A7DF1315D993AC6921D /* tests_parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F44EB7FAE08D617689103EA8 /* tests_parse.hpp */; }; + 1E9317690A116802F308269A /* crand.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D400B14B95A6EB5027D7E49 /* crand.hpp */; }; + A5308DFB9105D5AEBAB414AB /* default_engines.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 34206415A0310CBC29839EFB /* default_engines.hpp */; }; + 2A39D1AD967431719F69AE00 /* device.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B902D65EA56A9C2C0ED6B042 /* device.hpp */; }; + D2659B893EA1FB4C479678DC /* engine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 61A63F304D0E06FEB6791A14 /* engine.hpp */; }; + E911E37455238B1BDE741D5B /* engine_lcg.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 98CF021D844D53B66D45114E /* engine_lcg.hpp */; }; + 385A8438A495E4FBAD8A618B /* random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 07C31E48F32AE5155C96F92B /* random.hpp */; }; + FAB23068662333E12F42AD69 /* seed.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9EE001BB56BF45DDEE8F471 /* seed.hpp */; }; + 51D31201BD90BB37465BA79F /* tests_random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 009F1149EC484758D5194F73 /* tests_random.hpp */; }; + 4FA2EAB4BBDD4A78C4D2C707 /* buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BEE08A50AA48511E13B46534 /* buffer.hpp */; }; + F3D20D26DFBEA595483565E8 /* tests_string_buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 829CEFD9EE64BD5DB7F5C56F /* tests_string_buffer.hpp */; }; + 0F0D80A57B76150804BAC3B2 /* tests_string_utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FED8A4F7EAAE2BF5D3584648 /* tests_string_utility.hpp */; }; + 68DED220545C23BA3D54E151 /* types.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 57D58DC2C3EFF0630C1201F8 /* types.hpp */; }; + C9B242ACB55BAADBDEF1C55A /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D8CCA06E443234F5CD0AD6CD /* utility.hpp */; }; + D0441251BC195A04E5C89900 /* convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F2DA6AFEB3E4E567490E095 /* convert.hpp */; }; + B6F02EE922D819DF2BC61B5B /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C5E1A3C5B175996D1A3AF321 /* macros.hpp */; }; + 7F71DF39EB864D90744327F1 /* tests_string_convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6E4685C95A48C9D943CBBFD2 /* tests_string_convert.hpp */; }; + 3C498899A80631D031D11C38 /* system_error.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0BF64FA0F79F85AFE0708DCA /* system_error.hpp */; }; + 7AE4A0CDE64934546F22D62C /* test.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 89F40CFB7546E4EA5E6521FB /* test.hpp */; }; + C0D2EA92AC66E03A152B3AEF /* test_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2FEA2ACD9B5A2D466479A7CE /* test_macros.hpp */; }; + DFB567944B1BFB1AD4F39CF3 /* guid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CE121DFCBA64F4EBA38331FC /* guid.hpp */; }; + 7BA0B721E787A217F075A493 /* tests_uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D392487ABF263E2228EB97D6 /* tests_uuid.hpp */; }; + 49E2B09EB54744253E20E6FD /* uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F854942DE4A66B1DCDC5A82D /* uuid.hpp */; }; + 59848AF2C599F8484E56D2A9 /* tests_uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08A98847F4AACC57DD2DC350 /* tests_uuid_namespace.hpp */; }; + 272F42CA93C2A3789CA9132F /* uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9624282C82E4B8D0EB01A1DB /* 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 */; }; @@ -329,275 +425,371 @@ /* Begin PBXFileReference section */ B3EA35381FAF3428E81465F2 /* BuildSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "BuildSettings.h"; path = "BuildSettings.h"; sourceTree = ""; }; - C8BB03B6B40DDBA59D2C18B6 /* CompilerDetect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "CompilerDetect.h"; path = "CompilerDetect.h"; sourceTree = ""; }; - DF79CCBECBE1928C344DA7A2 /* ComponentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ComponentManager.cpp"; path = "ComponentManager.cpp"; sourceTree = ""; }; - 0DE7DDE97901418BC223511F /* ComponentManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ComponentManager.h"; path = "ComponentManager.h"; sourceTree = ""; }; - 29C2B344957B1EEF1EDB38C9 /* Endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Endianness.h"; path = "Endianness.h"; sourceTree = ""; }; - 7188A7C7DD4CA6B7A6B2D681 /* FileReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "FileReader.cpp"; path = "FileReader.cpp"; sourceTree = ""; }; - 789C40CDE455AB776DB5C551 /* FileReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReader.h"; path = "FileReader.h"; sourceTree = ""; }; - DB7781B2C7C958A2B0E895B2 /* FileReaderFwd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReaderFwd.h"; path = "FileReaderFwd.h"; sourceTree = ""; }; - 469D619132EE4CD35B523B95 /* FlagSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FlagSet.h"; path = "FlagSet.h"; sourceTree = ""; }; - C444C007B080C3711993DB68 /* Logging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Logging.cpp"; path = "Logging.cpp"; sourceTree = ""; }; - 4B472BF53798163760FC04F9 /* Logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Logging.h"; path = "Logging.h"; sourceTree = ""; }; - 242D314090E69BEA1946B6C4 /* Profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Profiler.cpp"; path = "Profiler.cpp"; sourceTree = ""; }; - EB2F52B3579EA732A0876232 /* Profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Profiler.h"; path = "Profiler.h"; sourceTree = ""; }; - 45347CD8311B3ED0DA6BA4ED /* misc_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "misc_util.cpp"; path = "misc_util.cpp"; sourceTree = ""; }; - 0C9B7D60F8D680CA61E998C1 /* misc_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "misc_util.h"; path = "misc_util.h"; sourceTree = ""; }; - C1D8BBFD2D47117D7630CC7C /* mptAlloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAlloc.h"; path = "mptAlloc.h"; sourceTree = ""; }; - 8A4F1515768B187FDF9D3076 /* mptAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAssert.h"; path = "mptAssert.h"; sourceTree = ""; }; - 7AFA3D21664C15114F6B5221 /* mptBaseMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseMacros.h"; path = "mptBaseMacros.h"; sourceTree = ""; }; - C38BA8062F50A7F6F8B5D7C0 /* mptBaseTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseTypes.h"; path = "mptBaseTypes.h"; sourceTree = ""; }; - 016662BA6D2A61AA36909174 /* mptBaseUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseUtils.h"; path = "mptBaseUtils.h"; sourceTree = ""; }; - 0FED58597BD0679984D395D5 /* mptCRC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptCRC.h"; path = "mptCRC.h"; sourceTree = ""; }; - 48006EA3B4C46C937D2A9D5D /* mptException.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptException.h"; path = "mptException.h"; sourceTree = ""; }; - 8FBD12C8FBD7756944FA85FD /* mptExceptionText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptExceptionText.h"; path = "mptExceptionText.h"; sourceTree = ""; }; - 87F8F9C673DFBBBE1C3022DC /* mptFileIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptFileIO.cpp"; path = "mptFileIO.cpp"; sourceTree = ""; }; - CE66D9C8BAA2DC3223B5F429 /* mptFileIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptFileIO.h"; path = "mptFileIO.h"; sourceTree = ""; }; - 8BB5029B7706EEDCA06ADC9E /* mptIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptIO.cpp"; path = "mptIO.cpp"; sourceTree = ""; }; - D2C19A61BEE764C8A72DEA93 /* mptIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptIO.h"; path = "mptIO.h"; sourceTree = ""; }; - 6CE42646D8A82536A10E5600 /* mptLibrary.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptLibrary.cpp"; path = "mptLibrary.cpp"; sourceTree = ""; }; - 0A01842376BAEECDFF1909A8 /* mptLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptLibrary.h"; path = "mptLibrary.h"; sourceTree = ""; }; - B090B9769CCCBCE005DFD4D7 /* mptMemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMemory.h"; path = "mptMemory.h"; sourceTree = ""; }; - ECA9A22F5818F8AEA101B3AE /* mptMutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMutex.h"; path = "mptMutex.h"; sourceTree = ""; }; - D81B905BC46C7B9DEDD0695F /* mptOS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptOS.cpp"; path = "mptOS.cpp"; sourceTree = ""; }; - DF3010EFCB56DA55B49C5F21 /* mptOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOS.h"; path = "mptOS.h"; sourceTree = ""; }; - 42EAD35FAEA33E0A370359E4 /* mptOSError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOSError.h"; path = "mptOSError.h"; sourceTree = ""; }; - A92ACF5915BA90441EB6715C /* mptOSException.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOSException.h"; path = "mptOSException.h"; sourceTree = ""; }; - 79EBBC0F6568B0528EE5B066 /* mptPathString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptPathString.cpp"; path = "mptPathString.cpp"; sourceTree = ""; }; - 40C6EBAA2C18C39A153700AB /* mptPathString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptPathString.h"; path = "mptPathString.h"; sourceTree = ""; }; - 3A2051662607135ECF57797B /* mptRandom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptRandom.cpp"; path = "mptRandom.cpp"; sourceTree = ""; }; - 38BA47EA24F64A548D08634B /* mptRandom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptRandom.h"; path = "mptRandom.h"; sourceTree = ""; }; - ABB43B489705278AC069154C /* mptSpan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptSpan.h"; path = "mptSpan.h"; sourceTree = ""; }; - 4DCE2ABD39B5ECB4E20553D2 /* mptString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptString.cpp"; path = "mptString.cpp"; sourceTree = ""; }; - 14132ED7004F314169614938 /* mptString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptString.h"; path = "mptString.h"; sourceTree = ""; }; - 8BC5B2E4772D79B2E0988DC8 /* mptStringBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringBuffer.cpp"; path = "mptStringBuffer.cpp"; sourceTree = ""; }; - 097E1645F5FA09881E780A9C /* mptStringBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringBuffer.h"; path = "mptStringBuffer.h"; sourceTree = ""; }; - 355A76D121C23C9F8A2D51B5 /* mptStringFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringFormat.cpp"; path = "mptStringFormat.cpp"; sourceTree = ""; }; - 7CEEB443686BA88691E8A89A /* mptStringFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringFormat.h"; path = "mptStringFormat.h"; sourceTree = ""; }; - 0BAA820277C4E5A3C0E6F537 /* mptStringParse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringParse.cpp"; path = "mptStringParse.cpp"; sourceTree = ""; }; - 928059B2FE0F1B9D070CFCB4 /* mptStringParse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringParse.h"; path = "mptStringParse.h"; sourceTree = ""; }; - F8E2355B649CA005EDFBBADF /* mptThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptThread.h"; path = "mptThread.h"; sourceTree = ""; }; - 0CC952A87882BD5201E2D72C /* mptTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptTime.cpp"; path = "mptTime.cpp"; sourceTree = ""; }; - 9319403DFF8795BC487150BC /* mptTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptTime.h"; path = "mptTime.h"; sourceTree = ""; }; - 18FB305284B49BFC0D14B6D6 /* mptUUID.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptUUID.cpp"; path = "mptUUID.cpp"; sourceTree = ""; }; - 9F5892890BC7E70854B0A208 /* mptUUID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptUUID.h"; path = "mptUUID.h"; sourceTree = ""; }; - 990A32C5054692880E3B0F18 /* serialization_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "serialization_utils.cpp"; path = "serialization_utils.cpp"; sourceTree = ""; }; - E0C6C6E84C37C961155643EA /* serialization_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "serialization_utils.h"; path = "serialization_utils.h"; sourceTree = ""; }; - 7E6F72886AC05DCA93244C8C /* stdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stdafx.h"; path = "stdafx.h"; sourceTree = ""; }; - F784BBFA633E26A5EC9D407F /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "version.cpp"; path = "version.cpp"; sourceTree = ""; }; - BEDEE25B2A4D38DB7336F3DA /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "version.h"; path = "version.h"; sourceTree = ""; }; - 00C36B686C522D53754E0E6B /* versionNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "versionNumber.h"; path = "versionNumber.h"; sourceTree = ""; }; - FF7D561FEBFA496214784A76 /* libopenmpt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt.h"; path = "libopenmpt.h"; sourceTree = ""; }; - A12227FB8D8AEDC8F6F501DF /* libopenmpt.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt.hpp"; path = "libopenmpt.hpp"; sourceTree = ""; }; - E0A38FA6CCB68FFF75A06CEC /* libopenmpt_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_c.cpp"; path = "libopenmpt_c.cpp"; sourceTree = ""; }; - 51358D5ABD70ED1DC6656AAD /* libopenmpt_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_config.h"; path = "libopenmpt_config.h"; sourceTree = ""; }; - AB8C8BC6970ADC5F80029AF7 /* libopenmpt_cxx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_cxx.cpp"; path = "libopenmpt_cxx.cpp"; sourceTree = ""; }; - F0CBC8E2DCDEC83B85C8A528 /* libopenmpt_ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_ext.h"; path = "libopenmpt_ext.h"; sourceTree = ""; }; - D2619CDABEDFEC73A7D7AA0B /* libopenmpt_ext.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext.hpp"; path = "libopenmpt_ext.hpp"; sourceTree = ""; }; - 00F1936D6C023C14F553CE53 /* libopenmpt_ext_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_ext_impl.cpp"; path = "libopenmpt_ext_impl.cpp"; sourceTree = ""; }; - 9E4A50270A5CF8CD93AD8A0D /* libopenmpt_ext_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext_impl.hpp"; path = "libopenmpt_ext_impl.hpp"; sourceTree = ""; }; - EB31548F576DB452606231E2 /* libopenmpt_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_impl.cpp"; path = "libopenmpt_impl.cpp"; sourceTree = ""; }; - 1278B7FF7EB317C387A89452 /* libopenmpt_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_impl.hpp"; path = "libopenmpt_impl.hpp"; sourceTree = ""; }; - 5F96AEB5CB5C0BD214B89934 /* libopenmpt_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_internal.h"; path = "libopenmpt_internal.h"; sourceTree = ""; }; - 881BE943741C7DBE9DE4E942 /* libopenmpt_stream_callbacks_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_buffer.h"; path = "libopenmpt_stream_callbacks_buffer.h"; sourceTree = ""; }; - 5196A3873D016493E61CC9F8 /* libopenmpt_stream_callbacks_fd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_fd.h"; path = "libopenmpt_stream_callbacks_fd.h"; sourceTree = ""; }; - E9072015D5DDA612BE87C165 /* libopenmpt_stream_callbacks_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_file.h"; path = "libopenmpt_stream_callbacks_file.h"; sourceTree = ""; }; - 6754160A53FD7D397C9399B8 /* libopenmpt_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_version.h"; path = "libopenmpt_version.h"; sourceTree = ""; }; - E94A3B16D5C72E59FE442F6D /* AudioSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioSample.h"; path = "AudioSample.h"; sourceTree = ""; }; - 376C68D9A325D3832C85ED5D /* Dither.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dither.h"; path = "Dither.h"; sourceTree = ""; }; - E04519EDCC97F0DCB5B62DED /* MixSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSample.h"; path = "MixSample.h"; sourceTree = ""; }; - 83603E98EFD04011B8EFBA99 /* MixSampleConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSampleConvert.h"; path = "MixSampleConvert.h"; sourceTree = ""; }; - 10C48C997CDEEF3AC50000CF /* SampleBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleBuffer.h"; path = "SampleBuffer.h"; sourceTree = ""; }; - C135F3922D505634767266C8 /* SampleFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormat.h"; path = "SampleFormat.h"; sourceTree = ""; }; - 4E4E0060BA5FA80643B13A46 /* SampleFormatConverters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatConverters.h"; path = "SampleFormatConverters.h"; sourceTree = ""; }; - 97CCA6B8033DA931CC5B23BA /* SampleFormatCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatCopy.h"; path = "SampleFormatCopy.h"; sourceTree = ""; }; - 46183367B28688E6FB6F43E6 /* AGC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AGC.cpp"; path = "AGC.cpp"; sourceTree = ""; }; - CD394DF7391D5C3742208A73 /* AGC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AGC.h"; path = "AGC.h"; sourceTree = ""; }; - A639A31612A8F8955B91B395 /* DSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DSP.cpp"; path = "DSP.cpp"; sourceTree = ""; }; - 2494821B9077915B997ABF97 /* DSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DSP.h"; path = "DSP.h"; sourceTree = ""; }; - 90CB8F337C1C7B75A5806937 /* EQ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "EQ.cpp"; path = "EQ.cpp"; sourceTree = ""; }; - 5712F8F64338C25D2C7E4729 /* EQ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "EQ.h"; path = "EQ.h"; sourceTree = ""; }; - C4F5C613B0DC880B592DEF28 /* Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Reverb.cpp"; path = "Reverb.cpp"; sourceTree = ""; }; - 8B509D47778CA0B1E09EB8A8 /* Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Reverb.h"; path = "Reverb.h"; sourceTree = ""; }; - 3C7C769D28106C4591D4C5F9 /* AudioCriticalSection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AudioCriticalSection.cpp"; path = "AudioCriticalSection.cpp"; sourceTree = ""; }; - 8374A0D26F1D080298B32381 /* AudioCriticalSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioCriticalSection.h"; path = "AudioCriticalSection.h"; sourceTree = ""; }; - 4820202EB485B3B43D5E558D /* AudioReadTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioReadTarget.h"; path = "AudioReadTarget.h"; sourceTree = ""; }; - 2770B7559334B6455C9AE60F /* BitReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "BitReader.h"; path = "BitReader.h"; sourceTree = ""; }; - 234520938FD4E17D98D0C295 /* ChunkReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ChunkReader.h"; path = "ChunkReader.h"; sourceTree = ""; }; - 0AD00B1E76940A0E3FFA3AD8 /* Container.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Container.h"; path = "Container.h"; sourceTree = ""; }; - 81C3378A6DD637E316C014D0 /* ContainerMMCMP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerMMCMP.cpp"; path = "ContainerMMCMP.cpp"; sourceTree = ""; }; - 8B374EEFF79CE1758075834E /* ContainerPP20.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerPP20.cpp"; path = "ContainerPP20.cpp"; sourceTree = ""; }; - A5CD504691351714FAA02B2A /* ContainerUMX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerUMX.cpp"; path = "ContainerUMX.cpp"; sourceTree = ""; }; - 60C9E97F4C31B04DB59CC463 /* ContainerXPK.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerXPK.cpp"; path = "ContainerXPK.cpp"; sourceTree = ""; }; - 82966FC4EE5A6EB4B7C09E7E /* Dlsbank.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Dlsbank.cpp"; path = "Dlsbank.cpp"; sourceTree = ""; }; - 094AC98A75033435FE624E0F /* Dlsbank.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dlsbank.h"; path = "Dlsbank.h"; sourceTree = ""; }; - 033046886FF44478385A7542 /* Fastmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Fastmix.cpp"; path = "Fastmix.cpp"; sourceTree = ""; }; - A976C22395C899137EE7D623 /* FloatMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FloatMixer.h"; path = "FloatMixer.h"; sourceTree = ""; }; - BA75D59E26DB6825AFB30AFE /* ITCompression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITCompression.cpp"; path = "ITCompression.cpp"; sourceTree = ""; }; - 785621D1E47084722D939406 /* ITCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITCompression.h"; path = "ITCompression.h"; sourceTree = ""; }; - F445C353600AC2432970F20D /* ITTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITTools.cpp"; path = "ITTools.cpp"; sourceTree = ""; }; - FB7426CE672E9178F08DAB52 /* ITTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITTools.h"; path = "ITTools.h"; sourceTree = ""; }; - B3A411869F38072E08FD60E2 /* InstrumentExtensions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "InstrumentExtensions.cpp"; path = "InstrumentExtensions.cpp"; sourceTree = ""; }; - E1A6F598CD8DB79076DE1DAE /* IntMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "IntMixer.h"; path = "IntMixer.h"; sourceTree = ""; }; - E922BFF4D57496E4BE93D3F4 /* Load_669.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_669.cpp"; path = "Load_669.cpp"; sourceTree = ""; }; - 7ABCB9EE660E91DE4F2DCEEE /* Load_amf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_amf.cpp"; path = "Load_amf.cpp"; sourceTree = ""; }; - A9723D6595C414557EE35165 /* Load_ams.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ams.cpp"; path = "Load_ams.cpp"; sourceTree = ""; }; - 3A2F3980268110700FA04D80 /* Load_c67.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_c67.cpp"; path = "Load_c67.cpp"; sourceTree = ""; }; - 3FADA47D2BFF7B6D141EB97D /* Load_dbm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dbm.cpp"; path = "Load_dbm.cpp"; sourceTree = ""; }; - 626C67FACEFB28E5D7F709FD /* Load_digi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_digi.cpp"; path = "Load_digi.cpp"; sourceTree = ""; }; - 3EEEA1E22A4079D2135FB6E2 /* Load_dmf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dmf.cpp"; path = "Load_dmf.cpp"; sourceTree = ""; }; - 2D1D0419196FDB08028E1819 /* Load_dsm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsm.cpp"; path = "Load_dsm.cpp"; sourceTree = ""; }; - 08D8B6C2746778AD7D6359C5 /* Load_dsym.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsym.cpp"; path = "Load_dsym.cpp"; sourceTree = ""; }; - F2A55F16DEF73606C7167416 /* Load_dtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dtm.cpp"; path = "Load_dtm.cpp"; sourceTree = ""; }; - 9FB35A128B05320274246F12 /* Load_far.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_far.cpp"; path = "Load_far.cpp"; sourceTree = ""; }; - EF83F00ADBD5C7FAC4F4040B /* Load_fmt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_fmt.cpp"; path = "Load_fmt.cpp"; sourceTree = ""; }; - A2BF428A8E111A7A7730578A /* Load_gdm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_gdm.cpp"; path = "Load_gdm.cpp"; sourceTree = ""; }; - C8156F5FB467464F9D86835F /* Load_imf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_imf.cpp"; path = "Load_imf.cpp"; sourceTree = ""; }; - 2BE69F5F97AA9E4F6010CF19 /* Load_it.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_it.cpp"; path = "Load_it.cpp"; sourceTree = ""; }; - 74162BB8606802A849873FB8 /* Load_itp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_itp.cpp"; path = "Load_itp.cpp"; sourceTree = ""; }; - 66A16AE852F341D83B127FE8 /* Load_mdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mdl.cpp"; path = "Load_mdl.cpp"; sourceTree = ""; }; - 213FEC7A0D91C36AF6AF007B /* Load_med.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_med.cpp"; path = "Load_med.cpp"; sourceTree = ""; }; - 27D80507132ADDF6FC481A07 /* Load_mid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mid.cpp"; path = "Load_mid.cpp"; sourceTree = ""; }; - DE23C7BACA759EAAB394DBBA /* Load_mo3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mo3.cpp"; path = "Load_mo3.cpp"; sourceTree = ""; }; - C80574FBB4574BEB9D7688FB /* Load_mod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mod.cpp"; path = "Load_mod.cpp"; sourceTree = ""; }; - 1DECE55F093EBD4FF25CFA5F /* Load_mt2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mt2.cpp"; path = "Load_mt2.cpp"; sourceTree = ""; }; - 3AEFB64126418E310F60CB41 /* Load_mtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mtm.cpp"; path = "Load_mtm.cpp"; sourceTree = ""; }; - BAE3374A26FE9AEB6F20AB7F /* Load_mus_km.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mus_km.cpp"; path = "Load_mus_km.cpp"; sourceTree = ""; }; - 9EDE23268A30FB15734F3826 /* Load_okt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_okt.cpp"; path = "Load_okt.cpp"; sourceTree = ""; }; - F2EE6B1DDE40430DC75F801D /* Load_plm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_plm.cpp"; path = "Load_plm.cpp"; sourceTree = ""; }; - 3B3E749027904B8010AF8890 /* Load_psm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_psm.cpp"; path = "Load_psm.cpp"; sourceTree = ""; }; - FE209F35EA727625D391B335 /* Load_ptm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ptm.cpp"; path = "Load_ptm.cpp"; sourceTree = ""; }; - A2D80BC78E2AE3B6774920C7 /* Load_s3m.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_s3m.cpp"; path = "Load_s3m.cpp"; sourceTree = ""; }; - 0258BF8EEEA9967ED7C8D38E /* Load_sfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_sfx.cpp"; path = "Load_sfx.cpp"; sourceTree = ""; }; - BE062679AA58FD6893773A79 /* Load_stm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stm.cpp"; path = "Load_stm.cpp"; sourceTree = ""; }; - A32656D88F782DC878976AD8 /* Load_stp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stp.cpp"; path = "Load_stp.cpp"; sourceTree = ""; }; - A7C3277113DE8A125C009BA6 /* Load_symmod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_symmod.cpp"; path = "Load_symmod.cpp"; sourceTree = ""; }; - 1EDF51BD0A3129ADF34F66BD /* Load_uax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_uax.cpp"; path = "Load_uax.cpp"; sourceTree = ""; }; - E77EEE5AD3D0C54ABCEF025B /* Load_ult.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ult.cpp"; path = "Load_ult.cpp"; sourceTree = ""; }; - B010DAF39C62B1E38581EEF3 /* Load_wav.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_wav.cpp"; path = "Load_wav.cpp"; sourceTree = ""; }; - E9A325CB556824BB1ECE5485 /* Load_xm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_xm.cpp"; path = "Load_xm.cpp"; sourceTree = ""; }; - B67C94FB2236FFA5AB951980 /* Loaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Loaders.h"; path = "Loaders.h"; sourceTree = ""; }; - 01A54485ED2138C8169F38DC /* MIDIEvents.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIEvents.cpp"; path = "MIDIEvents.cpp"; sourceTree = ""; }; - 88BD923C740F6A2C5D2EA73C /* MIDIEvents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIEvents.h"; path = "MIDIEvents.h"; sourceTree = ""; }; - EC1C3DB0D89930F301173107 /* MIDIMacros.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIMacros.cpp"; path = "MIDIMacros.cpp"; sourceTree = ""; }; - B33EA6149F907D0488AFBA14 /* MIDIMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIMacros.h"; path = "MIDIMacros.h"; sourceTree = ""; }; - 5C6B0284C8FAC36ED1F6A486 /* MPEGFrame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MPEGFrame.cpp"; path = "MPEGFrame.cpp"; sourceTree = ""; }; - E37887224F3D861218A3B6DC /* MPEGFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MPEGFrame.h"; path = "MPEGFrame.h"; sourceTree = ""; }; - 51385011BDFC4E0186627FCB /* Message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Message.cpp"; path = "Message.cpp"; sourceTree = ""; }; - 8FE0A34DFB990EF884F928D2 /* Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Message.h"; path = "Message.h"; sourceTree = ""; }; - E9638FF8D5CB55C63E376ADC /* MixFuncTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixFuncTable.cpp"; path = "MixFuncTable.cpp"; sourceTree = ""; }; - F02A9277DCA785BA052586CE /* MixFuncTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixFuncTable.h"; path = "MixFuncTable.h"; sourceTree = ""; }; - F513060161825B80AA6B1680 /* Mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Mixer.h"; path = "Mixer.h"; sourceTree = ""; }; - 884A9E2774B264F5DD1D790B /* MixerInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerInterface.h"; path = "MixerInterface.h"; sourceTree = ""; }; - 78C9FA866446EEC98DC3EEDD /* MixerLoops.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerLoops.cpp"; path = "MixerLoops.cpp"; sourceTree = ""; }; - 3F58B7222BAA8E1214C9CB22 /* MixerLoops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerLoops.h"; path = "MixerLoops.h"; sourceTree = ""; }; - 4031A658AC9639DF356FDBB7 /* MixerSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerSettings.cpp"; path = "MixerSettings.cpp"; sourceTree = ""; }; - C7865D7E33A1C01F7CC3D0B3 /* MixerSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerSettings.h"; path = "MixerSettings.h"; sourceTree = ""; }; - E78CF131D309E574FC86E588 /* ModChannel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModChannel.cpp"; path = "ModChannel.cpp"; sourceTree = ""; }; - 05E927AFF13AFF9EDA593CAF /* ModChannel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModChannel.h"; path = "ModChannel.h"; sourceTree = ""; }; - 02A29E0A6E073291F7DFD369 /* ModInstrument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModInstrument.cpp"; path = "ModInstrument.cpp"; sourceTree = ""; }; - 09DF9E1A75F901BCBE1B1250 /* ModInstrument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModInstrument.h"; path = "ModInstrument.h"; sourceTree = ""; }; - AF6196981BF1578324ED389B /* ModSample.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSample.cpp"; path = "ModSample.cpp"; sourceTree = ""; }; - 76BEF36AE282F25AABE82225 /* ModSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSample.h"; path = "ModSample.h"; sourceTree = ""; }; - 8A83B34AF69D16EC3FC02680 /* ModSampleCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSampleCopy.h"; path = "ModSampleCopy.h"; sourceTree = ""; }; - 63C188DFCFDBEB8018FEFB14 /* ModSequence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSequence.cpp"; path = "ModSequence.cpp"; sourceTree = ""; }; - AA1915CB16A9D6B51FA5B7CD /* ModSequence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSequence.h"; path = "ModSequence.h"; sourceTree = ""; }; - 195FB3DD85CD085DCEB6C35C /* OPL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OPL.cpp"; path = "OPL.cpp"; sourceTree = ""; }; - E0AF57C14C9366015596943D /* OPL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OPL.h"; path = "OPL.h"; sourceTree = ""; }; - 521A6663BEA9274EC7A50866 /* OggStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OggStream.cpp"; path = "OggStream.cpp"; sourceTree = ""; }; - 59F2261CC5B6250C8E1C56D6 /* OggStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OggStream.h"; path = "OggStream.h"; sourceTree = ""; }; - 4002FE2CACBB68D7351B83B1 /* Paula.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Paula.cpp"; path = "Paula.cpp"; sourceTree = ""; }; - C775A39B33E4F81A7CCDB31A /* Paula.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Paula.h"; path = "Paula.h"; sourceTree = ""; }; - 8155EB0DED19EAFDB67F1AC8 /* Resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Resampler.h"; path = "Resampler.h"; sourceTree = ""; }; - 129D1878FE190CBB27970CCF /* RowVisitor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "RowVisitor.cpp"; path = "RowVisitor.cpp"; sourceTree = ""; }; - 597D37F345CF0EE32EEE4BF3 /* RowVisitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "RowVisitor.h"; path = "RowVisitor.h"; sourceTree = ""; }; - B2F24F229E44271287636422 /* S3MTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "S3MTools.cpp"; path = "S3MTools.cpp"; sourceTree = ""; }; - 798297766569596E0EBABF8B /* S3MTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "S3MTools.h"; path = "S3MTools.h"; sourceTree = ""; }; - A3EF8A9B0F608D14D87E079D /* SampleFormatBRR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatBRR.cpp"; path = "SampleFormatBRR.cpp"; sourceTree = ""; }; - 8CF15914786FAAAD61676845 /* SampleFormatFLAC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatFLAC.cpp"; path = "SampleFormatFLAC.cpp"; sourceTree = ""; }; - 08C5199174351C0A3D549692 /* SampleFormatMP3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMP3.cpp"; path = "SampleFormatMP3.cpp"; sourceTree = ""; }; - 51283E4FBD9A806B062FB6EF /* SampleFormatMediaFoundation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMediaFoundation.cpp"; path = "SampleFormatMediaFoundation.cpp"; sourceTree = ""; }; - A36716E08FE5667978DD2411 /* SampleFormatOpus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatOpus.cpp"; path = "SampleFormatOpus.cpp"; sourceTree = ""; }; - 914210D4FDB2124DC6D18CD5 /* SampleFormatSFZ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatSFZ.cpp"; path = "SampleFormatSFZ.cpp"; sourceTree = ""; }; - 2C53444118FCAB704192C7EF /* SampleFormatVorbis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatVorbis.cpp"; path = "SampleFormatVorbis.cpp"; sourceTree = ""; }; - 4C8CAEC9B8F1415041CAE328 /* SampleFormats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormats.cpp"; path = "SampleFormats.cpp"; sourceTree = ""; }; - 4AFFD6F63651AEE61F70EBF6 /* SampleIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleIO.cpp"; path = "SampleIO.cpp"; sourceTree = ""; }; - 11894234FD6F042CA6C06A49 /* SampleIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleIO.h"; path = "SampleIO.h"; sourceTree = ""; }; - 7FA7C6CA6B8E88C214DFEEDF /* Snd_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Snd_defs.h"; path = "Snd_defs.h"; sourceTree = ""; }; - 8ED5D7DDFA99D6CDC3FF0698 /* Snd_flt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_flt.cpp"; path = "Snd_flt.cpp"; sourceTree = ""; }; - 0889B141F46F73399DC0D956 /* Snd_fx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_fx.cpp"; path = "Snd_fx.cpp"; sourceTree = ""; }; - 4DE5ACEAB9A9ABDA820FDCA4 /* Sndfile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndfile.cpp"; path = "Sndfile.cpp"; sourceTree = ""; }; - 146A3EBF8023A9690983C343 /* Sndfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Sndfile.h"; path = "Sndfile.h"; sourceTree = ""; }; - 1F9C7BC50B833DBDB4D3A3DA /* Sndmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndmix.cpp"; path = "Sndmix.cpp"; sourceTree = ""; }; - 3A2316F1A6E9720DEF440170 /* SoundFilePlayConfig.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SoundFilePlayConfig.cpp"; path = "SoundFilePlayConfig.cpp"; sourceTree = ""; }; - C13B7D272D77DDEA366C5A7A /* SoundFilePlayConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SoundFilePlayConfig.h"; path = "SoundFilePlayConfig.h"; sourceTree = ""; }; - 847994AF706056A719B1BCC4 /* Tables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tables.cpp"; path = "Tables.cpp"; sourceTree = ""; }; - 4BE4B6B63720BA20A032D217 /* Tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tables.h"; path = "Tables.h"; sourceTree = ""; }; - 0E2CE45C7AF0E24C43561317 /* Tagging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tagging.cpp"; path = "Tagging.cpp"; sourceTree = ""; }; - 0CC13DCB787AA87501DAC24F /* Tagging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tagging.h"; path = "Tagging.h"; sourceTree = ""; }; - ECAC07275871061721D736E1 /* TinyFFT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "TinyFFT.cpp"; path = "TinyFFT.cpp"; sourceTree = ""; }; - F3BDB4C45F771F6FE8D63949 /* TinyFFT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "TinyFFT.h"; path = "TinyFFT.h"; sourceTree = ""; }; - F788BDF4E3DA94E4CCF9D1F4 /* UMXTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UMXTools.cpp"; path = "UMXTools.cpp"; sourceTree = ""; }; - 7EC3B01D6AAA721513FBD832 /* UMXTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UMXTools.h"; path = "UMXTools.h"; sourceTree = ""; }; - F5C7AFC7612D434EEA05E526 /* UpgradeModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UpgradeModule.cpp"; path = "UpgradeModule.cpp"; sourceTree = ""; }; - 08381BBCF489F2ABDDA82FBC /* WAVTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WAVTools.cpp"; path = "WAVTools.cpp"; sourceTree = ""; }; - 4F7A05BD3B61C7B4E4B12DD2 /* WAVTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WAVTools.h"; path = "WAVTools.h"; sourceTree = ""; }; - 2FFD15809B177921E43989B5 /* WindowedFIR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WindowedFIR.cpp"; path = "WindowedFIR.cpp"; sourceTree = ""; }; - 76F2488FE2810A7AEB7DEB91 /* WindowedFIR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WindowedFIR.h"; path = "WindowedFIR.h"; sourceTree = ""; }; - 5EE81FA5CAAC1E9593124F5F /* XMTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "XMTools.cpp"; path = "XMTools.cpp"; sourceTree = ""; }; - E5744324512EAECEDA8DC8A8 /* XMTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "XMTools.h"; path = "XMTools.h"; sourceTree = ""; }; - 294D3010159F0700FEBD4410 /* load_j2b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "load_j2b.cpp"; path = "load_j2b.cpp"; sourceTree = ""; }; - 814AC2DA6DF3290A96894589 /* mod_specifications.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mod_specifications.cpp"; path = "mod_specifications.cpp"; sourceTree = ""; }; - 08E5A74DF462F8E6DD5AB67E /* mod_specifications.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mod_specifications.h"; path = "mod_specifications.h"; sourceTree = ""; }; - 08812CFDF4FD1F401D7B2054 /* modcommand.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modcommand.cpp"; path = "modcommand.cpp"; sourceTree = ""; }; - CFEBF58EBB3DCD7EA45C0A8F /* modcommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modcommand.h"; path = "modcommand.h"; sourceTree = ""; }; - F18BC5CD5DA6286FA6C83803 /* modsmp_ctrl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modsmp_ctrl.cpp"; path = "modsmp_ctrl.cpp"; sourceTree = ""; }; - B8E8E1922478A37D2D748495 /* modsmp_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modsmp_ctrl.h"; path = "modsmp_ctrl.h"; sourceTree = ""; }; - E266E428CEB7CF6AF71BBE2C /* opal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "opal.h"; path = "opal.h"; sourceTree = ""; }; - 4822C14EB4E6BF3E7D4CF008 /* pattern.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "pattern.cpp"; path = "pattern.cpp"; sourceTree = ""; }; - 4F2C9921BBE503CC44451EA6 /* pattern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "pattern.h"; path = "pattern.h"; sourceTree = ""; }; - 4F9C3B3D3B1A8CD624124A6E /* patternContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "patternContainer.cpp"; path = "patternContainer.cpp"; sourceTree = ""; }; - D68280FDC29580566B7F5D43 /* patternContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "patternContainer.h"; path = "patternContainer.h"; sourceTree = ""; }; - F527128B6144047C2A1C71E9 /* DigiBoosterEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DigiBoosterEcho.cpp"; path = "DigiBoosterEcho.cpp"; sourceTree = ""; }; - BC2659D128380178B18993B7 /* DigiBoosterEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DigiBoosterEcho.h"; path = "DigiBoosterEcho.h"; sourceTree = ""; }; - 2F0089A19B3BE964A43066F4 /* LFOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "LFOPlugin.cpp"; path = "LFOPlugin.cpp"; sourceTree = ""; }; - F65E970E62CF99872BEE1310 /* LFOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "LFOPlugin.h"; path = "LFOPlugin.h"; sourceTree = ""; }; - 35100F5EA175A2E42A4E44BD /* OpCodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OpCodes.h"; path = "OpCodes.h"; sourceTree = ""; }; - 85CB2752F1DCCFF87A2E6238 /* PlugInterface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PlugInterface.cpp"; path = "PlugInterface.cpp"; sourceTree = ""; }; - CC6D25B5383482D1818F1034 /* PlugInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PlugInterface.h"; path = "PlugInterface.h"; sourceTree = ""; }; - CAB0009F36C2A845BF133B85 /* PluginManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PluginManager.cpp"; path = "PluginManager.cpp"; sourceTree = ""; }; - D13D8A553D04E771865F75D4 /* PluginManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginManager.h"; path = "PluginManager.h"; sourceTree = ""; }; - A066DC7B0C78842295C91662 /* PluginMixBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginMixBuffer.h"; path = "PluginMixBuffer.h"; sourceTree = ""; }; - E96DF64E5534536B9E8FE1CD /* PluginStructs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginStructs.h"; path = "PluginStructs.h"; sourceTree = ""; }; - 3702474223ABAE714C41CAF0 /* SymMODEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SymMODEcho.cpp"; path = "SymMODEcho.cpp"; sourceTree = ""; }; - 3E370FFE2AB55F9713AD1D2F /* SymMODEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SymMODEcho.h"; path = "SymMODEcho.h"; sourceTree = ""; }; - A748CBA393F132D3BC874E52 /* Chorus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Chorus.cpp"; path = "Chorus.cpp"; sourceTree = ""; }; - AE21EF679A9F3F018397FD98 /* Chorus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Chorus.h"; path = "Chorus.h"; sourceTree = ""; }; - 324CF1ED1E8B9B69C70D789B /* Compressor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Compressor.cpp"; path = "Compressor.cpp"; sourceTree = ""; }; - 79F7C0FD658BB6A5CE4F105A /* Compressor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Compressor.h"; path = "Compressor.h"; sourceTree = ""; }; - 38FD1854A40EC1FA2D60533A /* DMOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOPlugin.cpp"; path = "DMOPlugin.cpp"; sourceTree = ""; }; - BF96A8892B5D05A674B89308 /* DMOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOPlugin.h"; path = "DMOPlugin.h"; sourceTree = ""; }; - 9E6CA3568A0099FEF3C4F2B2 /* DMOUtils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOUtils.cpp"; path = "DMOUtils.cpp"; sourceTree = ""; }; - 3CE2CB18288B334851214FC7 /* DMOUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOUtils.h"; path = "DMOUtils.h"; sourceTree = ""; }; - B7E54627A324F1A24CA7CDD4 /* Distortion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Distortion.cpp"; path = "Distortion.cpp"; sourceTree = ""; }; - BE6B682FAAFF5DD713C4B78B /* Distortion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Distortion.h"; path = "Distortion.h"; sourceTree = ""; }; - 4B5F02E737DD528020D51018 /* Echo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Echo.cpp"; path = "Echo.cpp"; sourceTree = ""; }; - D256821FBE69827867535F65 /* Echo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Echo.h"; path = "Echo.h"; sourceTree = ""; }; - E6C3D4E8528A31059BE5BF67 /* Flanger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Flanger.cpp"; path = "Flanger.cpp"; sourceTree = ""; }; - 6DC18303D9FCE3C6E2F16056 /* Flanger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Flanger.h"; path = "Flanger.h"; sourceTree = ""; }; - DD90FE0BC939663BF2CF81BA /* Gargle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Gargle.cpp"; path = "Gargle.cpp"; sourceTree = ""; }; - 64E42623506277BC395A3554 /* Gargle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Gargle.h"; path = "Gargle.h"; sourceTree = ""; }; - F3F92A725F161D6328EE89D0 /* I3DL2Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "I3DL2Reverb.cpp"; path = "I3DL2Reverb.cpp"; sourceTree = ""; }; - B12324271D35CCCDA6865E0D /* I3DL2Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "I3DL2Reverb.h"; path = "I3DL2Reverb.h"; sourceTree = ""; }; - D13FDA133D0637308661C592 /* ParamEq.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ParamEq.cpp"; path = "ParamEq.cpp"; sourceTree = ""; }; - 984693AC0482F36F0D7770FF /* ParamEq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ParamEq.h"; path = "ParamEq.h"; sourceTree = ""; }; - DAAC944646C986370FA1F3A4 /* WavesReverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WavesReverb.cpp"; path = "WavesReverb.cpp"; sourceTree = ""; }; - 612E3B4CCD3FE3F256917532 /* WavesReverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WavesReverb.h"; path = "WavesReverb.h"; sourceTree = ""; }; - 7EBDDAED6AA49CE513F50203 /* tuning.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuning.cpp"; path = "tuning.cpp"; sourceTree = ""; }; - C5E1C72CB11DCB961A30E38D /* tuning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuning.h"; path = "tuning.h"; sourceTree = ""; }; - 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 = ""; }; + 5DDA4225494209F3B2AD1D09 /* ComponentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ComponentManager.cpp"; path = "ComponentManager.cpp"; sourceTree = ""; }; + E41C930DD0998650F9168764 /* ComponentManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ComponentManager.h"; path = "ComponentManager.h"; sourceTree = ""; }; + A78448B4133EB35E9C9DCD38 /* Endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Endianness.h"; path = "Endianness.h"; sourceTree = ""; }; + 6FE2766FDBA6755FA40CA629 /* FileReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "FileReader.cpp"; path = "FileReader.cpp"; sourceTree = ""; }; + F65ED53C621840E7EB775AC1 /* FileReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReader.h"; path = "FileReader.h"; sourceTree = ""; }; + 99113C54856313446E825054 /* FileReaderFwd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReaderFwd.h"; path = "FileReaderFwd.h"; sourceTree = ""; }; + CD158EA1B96679E3E2CA67A5 /* FlagSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FlagSet.h"; path = "FlagSet.h"; sourceTree = ""; }; + 82AF67226EEB6A8CD7FD8283 /* Logging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Logging.cpp"; path = "Logging.cpp"; sourceTree = ""; }; + 89EADC5C753BC89E9E9FB660 /* Logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Logging.h"; path = "Logging.h"; sourceTree = ""; }; + A2EFC5AF0EA9305A97084B34 /* Profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Profiler.cpp"; path = "Profiler.cpp"; sourceTree = ""; }; + E93A381155A98D909E924890 /* Profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Profiler.h"; path = "Profiler.h"; sourceTree = ""; }; + 4C98AFA3387F719BE1CFD7B8 /* misc_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "misc_util.cpp"; path = "misc_util.cpp"; sourceTree = ""; }; + CA05257BB64128E51F5440DC /* misc_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "misc_util.h"; path = "misc_util.h"; sourceTree = ""; }; + BFE3A15B2B52F7DA743BB2DA /* mptAlloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAlloc.h"; path = "mptAlloc.h"; sourceTree = ""; }; + 48BABC2F34F6BF999D08D890 /* mptAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAssert.h"; path = "mptAssert.h"; sourceTree = ""; }; + 3894F8C224E6CFB20D050DC3 /* mptBaseMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseMacros.h"; path = "mptBaseMacros.h"; sourceTree = ""; }; + AA70483816354728DF9A77F2 /* mptBaseTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseTypes.h"; path = "mptBaseTypes.h"; sourceTree = ""; }; + FFBF31626B84305234EA601C /* mptBaseUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseUtils.h"; path = "mptBaseUtils.h"; sourceTree = ""; }; + 4893B4B8347A76B0DDCADCCD /* mptFileIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptFileIO.cpp"; path = "mptFileIO.cpp"; sourceTree = ""; }; + 4F5DFCE53B99FF4FA4AB1747 /* mptFileIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptFileIO.h"; path = "mptFileIO.h"; sourceTree = ""; }; + CC1744E2B8682F24E1CC1DE6 /* mptIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptIO.cpp"; path = "mptIO.cpp"; sourceTree = ""; }; + D39FEC8CBFC5B6F3A80B3CBF /* mptIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptIO.h"; path = "mptIO.h"; sourceTree = ""; }; + 644C64E5D01063D59976939F /* mptLibrary.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptLibrary.cpp"; path = "mptLibrary.cpp"; sourceTree = ""; }; + ABC705E51781708FA0E08A69 /* mptLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptLibrary.h"; path = "mptLibrary.h"; sourceTree = ""; }; + 3187DC931DC3DFFD86D5F7F4 /* mptMemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMemory.h"; path = "mptMemory.h"; sourceTree = ""; }; + 4D54105FB9C265DE02AC20DE /* mptMutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMutex.h"; path = "mptMutex.h"; sourceTree = ""; }; + 197ED1A205CFBCE42E33ABA6 /* mptOS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptOS.cpp"; path = "mptOS.cpp"; sourceTree = ""; }; + D71F5F7EC34529E5AC8BAEB0 /* mptOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOS.h"; path = "mptOS.h"; sourceTree = ""; }; + 482B33D7B4BAF4C1BDB6D5D9 /* mptOSException.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOSException.h"; path = "mptOSException.h"; sourceTree = ""; }; + F8FFA039E47C947C0DFA9490 /* mptPathString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptPathString.cpp"; path = "mptPathString.cpp"; sourceTree = ""; }; + FFAE7297EB004A87D41F8797 /* mptPathString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptPathString.h"; path = "mptPathString.h"; sourceTree = ""; }; + 39CD38BA25B4FAB1CE0461CF /* mptRandom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptRandom.cpp"; path = "mptRandom.cpp"; sourceTree = ""; }; + 771B12226357158CCC692D83 /* mptRandom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptRandom.h"; path = "mptRandom.h"; sourceTree = ""; }; + 8A8D3F737674016B1FC56788 /* mptString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptString.cpp"; path = "mptString.cpp"; sourceTree = ""; }; + 11DF9F29FD1AA393662DBB8A /* mptString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptString.h"; path = "mptString.h"; sourceTree = ""; }; + 883EBBE474A681B2DD1196C8 /* mptStringBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringBuffer.cpp"; path = "mptStringBuffer.cpp"; sourceTree = ""; }; + 0FA2BEADFB1EB2F0249CB204 /* mptStringBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringBuffer.h"; path = "mptStringBuffer.h"; sourceTree = ""; }; + 32D37ED11E3B459F87A659B5 /* mptStringFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringFormat.cpp"; path = "mptStringFormat.cpp"; sourceTree = ""; }; + 39046168258154AB4EFE54BF /* mptStringFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringFormat.h"; path = "mptStringFormat.h"; sourceTree = ""; }; + 6877B1BCD491145E1DB424F2 /* mptStringParse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringParse.cpp"; path = "mptStringParse.cpp"; sourceTree = ""; }; + AF52CB081BE28CF324DE6D0B /* mptStringParse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringParse.h"; path = "mptStringParse.h"; sourceTree = ""; }; + 9798AB1383D4AE7DECE6C674 /* mptThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptThread.h"; path = "mptThread.h"; sourceTree = ""; }; + 223343AE0E6F461877815E0F /* mptTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptTime.cpp"; path = "mptTime.cpp"; sourceTree = ""; }; + 2906C3D61557AE183EBB9CDA /* mptTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptTime.h"; path = "mptTime.h"; sourceTree = ""; }; + 2E6521581AA124C283B33CB9 /* mptUUID.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptUUID.cpp"; path = "mptUUID.cpp"; sourceTree = ""; }; + 35451523219600654AFAEE26 /* mptUUID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptUUID.h"; path = "mptUUID.h"; sourceTree = ""; }; + B826E652A4A436EC8D9CF483 /* serialization_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "serialization_utils.cpp"; path = "serialization_utils.cpp"; sourceTree = ""; }; + 1D73D10C89E3D38552024E0E /* serialization_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "serialization_utils.h"; path = "serialization_utils.h"; sourceTree = ""; }; + 9B74965A87C5819CB029705E /* stdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stdafx.h"; path = "stdafx.h"; sourceTree = ""; }; + F4502D4D600A98F7E969B2D1 /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "version.cpp"; path = "version.cpp"; sourceTree = ""; }; + 7B878772E7F5DCF130DF97F1 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "version.h"; path = "version.h"; sourceTree = ""; }; + 862D8FBAF2BC50A5FBB831BD /* versionNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "versionNumber.h"; path = "versionNumber.h"; sourceTree = ""; }; + 1C50C87508CDBBB8314ABCCC /* libopenmpt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt.h"; path = "libopenmpt.h"; sourceTree = ""; }; + FEEF55B5EA571C8353C33099 /* libopenmpt.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt.hpp"; path = "libopenmpt.hpp"; sourceTree = ""; }; + 7D3CA7A7694FA700123984ED /* libopenmpt_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_c.cpp"; path = "libopenmpt_c.cpp"; sourceTree = ""; }; + D7C59D9F4301FE624CF67AF2 /* libopenmpt_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_config.h"; path = "libopenmpt_config.h"; sourceTree = ""; }; + 88C0EB6B743E3C055D36FA9C /* libopenmpt_cxx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_cxx.cpp"; path = "libopenmpt_cxx.cpp"; sourceTree = ""; }; + 8D64E0E37977E03C2261BD29 /* libopenmpt_ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_ext.h"; path = "libopenmpt_ext.h"; sourceTree = ""; }; + AF95FC7F9B134D19840B0BB1 /* libopenmpt_ext.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext.hpp"; path = "libopenmpt_ext.hpp"; sourceTree = ""; }; + FD16906969283810F279CA4F /* libopenmpt_ext_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_ext_impl.cpp"; path = "libopenmpt_ext_impl.cpp"; sourceTree = ""; }; + 24AEA1AB90BF49521911DC91 /* libopenmpt_ext_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext_impl.hpp"; path = "libopenmpt_ext_impl.hpp"; sourceTree = ""; }; + 68E1BAE0D41C1BA4DD119833 /* libopenmpt_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_impl.cpp"; path = "libopenmpt_impl.cpp"; sourceTree = ""; }; + 8F271E51FB627E140458FBA3 /* libopenmpt_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_impl.hpp"; path = "libopenmpt_impl.hpp"; sourceTree = ""; }; + 1C197FFB88DFDB17D13A6A7A /* libopenmpt_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_internal.h"; path = "libopenmpt_internal.h"; sourceTree = ""; }; + A55432B09155C62ABA1D33AF /* libopenmpt_stream_callbacks_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_buffer.h"; path = "libopenmpt_stream_callbacks_buffer.h"; sourceTree = ""; }; + 9750BCAA83BB7CB62CD7E11B /* libopenmpt_stream_callbacks_fd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_fd.h"; path = "libopenmpt_stream_callbacks_fd.h"; sourceTree = ""; }; + C6559EA8B22B25A69BD53FF9 /* libopenmpt_stream_callbacks_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_file.h"; path = "libopenmpt_stream_callbacks_file.h"; sourceTree = ""; }; + 84F35288709CBAB79932D636 /* libopenmpt_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_version.h"; path = "libopenmpt_version.h"; sourceTree = ""; }; + 061DAD6CF299A0AF1B17A1C3 /* AudioSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioSample.h"; path = "AudioSample.h"; sourceTree = ""; }; + 3438DA2BA0F144D629515FB0 /* Dither.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dither.h"; path = "Dither.h"; sourceTree = ""; }; + A67796EF92C96DDF7BE8AAEF /* MixSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSample.h"; path = "MixSample.h"; sourceTree = ""; }; + C00C49BC2C7D4B35F59BC5BD /* MixSampleConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSampleConvert.h"; path = "MixSampleConvert.h"; sourceTree = ""; }; + CDD938BE39F49B5F8216ACF3 /* SampleBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleBuffer.h"; path = "SampleBuffer.h"; sourceTree = ""; }; + 7E4B9FB7EA650259338812ED /* SampleFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormat.h"; path = "SampleFormat.h"; sourceTree = ""; }; + 4B74FC5BB785A40240D73642 /* SampleFormatConverters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatConverters.h"; path = "SampleFormatConverters.h"; sourceTree = ""; }; + 9D832DC109F42F3AD212AAC2 /* SampleFormatCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatCopy.h"; path = "SampleFormatCopy.h"; sourceTree = ""; }; + 03C1D77D6F2F2DFDB818E8FC /* AGC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AGC.cpp"; path = "AGC.cpp"; sourceTree = ""; }; + 4A8F466AB67255AABF7583E6 /* AGC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AGC.h"; path = "AGC.h"; sourceTree = ""; }; + 63E2472DCF509DAC183A58AC /* DSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DSP.cpp"; path = "DSP.cpp"; sourceTree = ""; }; + AAD87E2A16BC8D6A1FBFBBA6 /* DSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DSP.h"; path = "DSP.h"; sourceTree = ""; }; + ADD0B30599219F47C2858D09 /* EQ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "EQ.cpp"; path = "EQ.cpp"; sourceTree = ""; }; + 342C2EE32052F84909987D15 /* EQ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "EQ.h"; path = "EQ.h"; sourceTree = ""; }; + 614172B44D2834ACF6789AC9 /* Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Reverb.cpp"; path = "Reverb.cpp"; sourceTree = ""; }; + E810D732D44CDA9C3D5FF293 /* Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Reverb.h"; path = "Reverb.h"; sourceTree = ""; }; + 0287C6D7EE1ABC7F57DF1534 /* AudioCriticalSection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AudioCriticalSection.cpp"; path = "AudioCriticalSection.cpp"; sourceTree = ""; }; + A013DD508CBC4480B55260FF /* AudioCriticalSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioCriticalSection.h"; path = "AudioCriticalSection.h"; sourceTree = ""; }; + 4599282EB1FEBBB43AD75D8D /* AudioReadTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioReadTarget.h"; path = "AudioReadTarget.h"; sourceTree = ""; }; + 642FCC0BD0F3CAFB9959FBC5 /* BitReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "BitReader.h"; path = "BitReader.h"; sourceTree = ""; }; + A0C761210C57230C15530424 /* ChunkReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ChunkReader.h"; path = "ChunkReader.h"; sourceTree = ""; }; + F96BF7C66530F6B62E962681 /* Container.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Container.h"; path = "Container.h"; sourceTree = ""; }; + E766CB6FD379CBC87C63A8B5 /* ContainerMMCMP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerMMCMP.cpp"; path = "ContainerMMCMP.cpp"; sourceTree = ""; }; + 3106A8899D6B3B102644DDE8 /* ContainerPP20.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerPP20.cpp"; path = "ContainerPP20.cpp"; sourceTree = ""; }; + 8B5FB83377C77E01E0329317 /* ContainerUMX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerUMX.cpp"; path = "ContainerUMX.cpp"; sourceTree = ""; }; + 465B516D32C3173B9B2E2C51 /* ContainerXPK.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerXPK.cpp"; path = "ContainerXPK.cpp"; sourceTree = ""; }; + 71325B6DDDF6595DA65C8A27 /* Dlsbank.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Dlsbank.cpp"; path = "Dlsbank.cpp"; sourceTree = ""; }; + 06163BDD72CFA587FB2EC061 /* Dlsbank.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dlsbank.h"; path = "Dlsbank.h"; sourceTree = ""; }; + 40EF5A3EACB3592E75198AF8 /* Fastmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Fastmix.cpp"; path = "Fastmix.cpp"; sourceTree = ""; }; + 861D6F9C726F468C5B8E839C /* FloatMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FloatMixer.h"; path = "FloatMixer.h"; sourceTree = ""; }; + B7EEDD9E23547125AC2C13FE /* ITCompression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITCompression.cpp"; path = "ITCompression.cpp"; sourceTree = ""; }; + 7E7AC939EA942CDB33B73C6F /* ITCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITCompression.h"; path = "ITCompression.h"; sourceTree = ""; }; + 3105D8099DC9D6F9662F07C4 /* ITTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITTools.cpp"; path = "ITTools.cpp"; sourceTree = ""; }; + F840982064FA02CBED591DA5 /* ITTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITTools.h"; path = "ITTools.h"; sourceTree = ""; }; + 107FF285FC12E82D65D741E2 /* InstrumentExtensions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "InstrumentExtensions.cpp"; path = "InstrumentExtensions.cpp"; sourceTree = ""; }; + 7EF2A0396AD96231132AC94E /* IntMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "IntMixer.h"; path = "IntMixer.h"; sourceTree = ""; }; + AF543CF79BA613E784C550F7 /* Load_669.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_669.cpp"; path = "Load_669.cpp"; sourceTree = ""; }; + 5763666743B53D572CD47A67 /* Load_amf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_amf.cpp"; path = "Load_amf.cpp"; sourceTree = ""; }; + 8619EADD726BC1CD5B8AFEDD /* Load_ams.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ams.cpp"; path = "Load_ams.cpp"; sourceTree = ""; }; + 17D6E5F80328BDE8EC46FAF8 /* Load_c67.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_c67.cpp"; path = "Load_c67.cpp"; sourceTree = ""; }; + 1C5451F608A628E6F1C465F6 /* Load_dbm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dbm.cpp"; path = "Load_dbm.cpp"; sourceTree = ""; }; + E8D68A4C54664C375D622D4F /* Load_digi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_digi.cpp"; path = "Load_digi.cpp"; sourceTree = ""; }; + 1B954E5B07E7254BF005635B /* Load_dmf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dmf.cpp"; path = "Load_dmf.cpp"; sourceTree = ""; }; + 0AC4B091F6158881DF34C591 /* Load_dsm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsm.cpp"; path = "Load_dsm.cpp"; sourceTree = ""; }; + 855AF850F1E9B93BFAE59A53 /* Load_dsym.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsym.cpp"; path = "Load_dsym.cpp"; sourceTree = ""; }; + CF4C0C8FBB9EE37EA4BD208F /* Load_dtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dtm.cpp"; path = "Load_dtm.cpp"; sourceTree = ""; }; + 65E5D7145137AF043A56EC14 /* Load_far.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_far.cpp"; path = "Load_far.cpp"; sourceTree = ""; }; + CC2A9D83B87C7473A19BB183 /* Load_fmt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_fmt.cpp"; path = "Load_fmt.cpp"; sourceTree = ""; }; + 7F66EF026BB8C6F254D70303 /* Load_gdm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_gdm.cpp"; path = "Load_gdm.cpp"; sourceTree = ""; }; + A5BC1BD8910EF3C77A2D30D8 /* Load_imf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_imf.cpp"; path = "Load_imf.cpp"; sourceTree = ""; }; + 68A5B415D469B3059DCFE3CF /* Load_it.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_it.cpp"; path = "Load_it.cpp"; sourceTree = ""; }; + 3A48A8BA269A7FAA0FB9BCBA /* Load_itp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_itp.cpp"; path = "Load_itp.cpp"; sourceTree = ""; }; + 434817612F9AEE5018B92B61 /* Load_mdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mdl.cpp"; path = "Load_mdl.cpp"; sourceTree = ""; }; + FEE598F3EA3770E3D356ADF3 /* Load_med.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_med.cpp"; path = "Load_med.cpp"; sourceTree = ""; }; + 047FB27FF0D0896FD9EFC67F /* Load_mid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mid.cpp"; path = "Load_mid.cpp"; sourceTree = ""; }; + BBCA7333A71C4B23903B8833 /* Load_mo3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mo3.cpp"; path = "Load_mo3.cpp"; sourceTree = ""; }; + 8E37F1FD7A89C8ED63A805FE /* Load_mod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mod.cpp"; path = "Load_mod.cpp"; sourceTree = ""; }; + FA9292D8E6E469C8CF03A7D8 /* Load_mt2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mt2.cpp"; path = "Load_mt2.cpp"; sourceTree = ""; }; + 179663BA03E83AAAEC0678BA /* Load_mtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mtm.cpp"; path = "Load_mtm.cpp"; sourceTree = ""; }; + 77F9E36EE31347102C3657A4 /* Load_mus_km.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mus_km.cpp"; path = "Load_mus_km.cpp"; sourceTree = ""; }; + 7B85D09E67D7A78E50F6E49E /* Load_okt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_okt.cpp"; path = "Load_okt.cpp"; sourceTree = ""; }; + B820E91FA472C00F8D91FD1F /* Load_plm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_plm.cpp"; path = "Load_plm.cpp"; sourceTree = ""; }; + 18E520090437F8F8ED553509 /* Load_psm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_psm.cpp"; path = "Load_psm.cpp"; sourceTree = ""; }; + DBC74BAEC719239EB03860AE /* Load_ptm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ptm.cpp"; path = "Load_ptm.cpp"; sourceTree = ""; }; + 7F7FB83F6BD18F2F54F0CC3F /* Load_s3m.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_s3m.cpp"; path = "Load_s3m.cpp"; sourceTree = ""; }; + DFFE6B07CB5043F7B46F8007 /* Load_sfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_sfx.cpp"; path = "Load_sfx.cpp"; sourceTree = ""; }; + 8438A37B708A7A6B59A9B77B /* Load_stm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stm.cpp"; path = "Load_stm.cpp"; sourceTree = ""; }; + 80CD02516C1FDA40553E1751 /* Load_stp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stp.cpp"; path = "Load_stp.cpp"; sourceTree = ""; }; + 64D9D395D0F33637191647CB /* Load_symmod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_symmod.cpp"; path = "Load_symmod.cpp"; sourceTree = ""; }; + FB85FE35E7D7D525D0F61236 /* Load_uax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_uax.cpp"; path = "Load_uax.cpp"; sourceTree = ""; }; + C4259BD3B07772C39996AFD3 /* Load_ult.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ult.cpp"; path = "Load_ult.cpp"; sourceTree = ""; }; + 7F2A39BA6B7C10AA549B4DBA /* Load_wav.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_wav.cpp"; path = "Load_wav.cpp"; sourceTree = ""; }; + 0FEE0A0B7BB209FB44183AC5 /* Load_xm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_xm.cpp"; path = "Load_xm.cpp"; sourceTree = ""; }; + 5C053551C8BE9FFB511EBAD5 /* Loaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Loaders.h"; path = "Loaders.h"; sourceTree = ""; }; + 6785B21F5302A6627C7FA676 /* MIDIEvents.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIEvents.cpp"; path = "MIDIEvents.cpp"; sourceTree = ""; }; + 6E4C21795A9EF86843BD3579 /* MIDIEvents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIEvents.h"; path = "MIDIEvents.h"; sourceTree = ""; }; + 7BE6C98A6763BDCD90E0BDE1 /* MIDIMacros.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIMacros.cpp"; path = "MIDIMacros.cpp"; sourceTree = ""; }; + 90E5528D7C372A7D6556678D /* MIDIMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIMacros.h"; path = "MIDIMacros.h"; sourceTree = ""; }; + D9ED4312457D05FD4E79E614 /* MPEGFrame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MPEGFrame.cpp"; path = "MPEGFrame.cpp"; sourceTree = ""; }; + 20389CD88CFC9AC85562CB92 /* MPEGFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MPEGFrame.h"; path = "MPEGFrame.h"; sourceTree = ""; }; + 8EF764C7FABB63B7C3219481 /* Message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Message.cpp"; path = "Message.cpp"; sourceTree = ""; }; + 15F89A5281B105FD0A1120D7 /* Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Message.h"; path = "Message.h"; sourceTree = ""; }; + 4631BEB2329984809B049996 /* MixFuncTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixFuncTable.cpp"; path = "MixFuncTable.cpp"; sourceTree = ""; }; + 0DFD03CEF979F71022F7F724 /* MixFuncTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixFuncTable.h"; path = "MixFuncTable.h"; sourceTree = ""; }; + B2BCAA171E2B00976714BB96 /* Mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Mixer.h"; path = "Mixer.h"; sourceTree = ""; }; + E517CDE1D17F93AF3AEBA7C5 /* MixerInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerInterface.h"; path = "MixerInterface.h"; sourceTree = ""; }; + BE848B1DAA017F60D37E7F74 /* MixerLoops.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerLoops.cpp"; path = "MixerLoops.cpp"; sourceTree = ""; }; + 1CFF639B08513B8BF16F789B /* MixerLoops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerLoops.h"; path = "MixerLoops.h"; sourceTree = ""; }; + 3DAAAE58A90F42DF32E8E3B7 /* MixerSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerSettings.cpp"; path = "MixerSettings.cpp"; sourceTree = ""; }; + 849C09A3F0B66C4439D97CD8 /* MixerSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerSettings.h"; path = "MixerSettings.h"; sourceTree = ""; }; + 045F6388F0DB56CB195957DF /* ModChannel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModChannel.cpp"; path = "ModChannel.cpp"; sourceTree = ""; }; + CB1AA5B1B76C7CA1A08BB9B1 /* ModChannel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModChannel.h"; path = "ModChannel.h"; sourceTree = ""; }; + FF1AA70A6B803A91F458DC69 /* ModInstrument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModInstrument.cpp"; path = "ModInstrument.cpp"; sourceTree = ""; }; + C6F44A3F320FAEE07B31BE74 /* ModInstrument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModInstrument.h"; path = "ModInstrument.h"; sourceTree = ""; }; + 2CE4D72698739911A16F7A29 /* ModSample.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSample.cpp"; path = "ModSample.cpp"; sourceTree = ""; }; + B37D08211F420711E8A737DB /* ModSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSample.h"; path = "ModSample.h"; sourceTree = ""; }; + 90A75BB3FCC1BE5445E4CEE8 /* ModSampleCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSampleCopy.h"; path = "ModSampleCopy.h"; sourceTree = ""; }; + 20D734048CF197A5D513A839 /* ModSequence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSequence.cpp"; path = "ModSequence.cpp"; sourceTree = ""; }; + 279C5659932B18449C27F95B /* ModSequence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSequence.h"; path = "ModSequence.h"; sourceTree = ""; }; + D60758F44276AD738B5F6873 /* OPL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OPL.cpp"; path = "OPL.cpp"; sourceTree = ""; }; + 5D055134C9E85F74D2EB8DB0 /* OPL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OPL.h"; path = "OPL.h"; sourceTree = ""; }; + D88489B544144BA04D102CB8 /* OggStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OggStream.cpp"; path = "OggStream.cpp"; sourceTree = ""; }; + 96B13BD202763AC2CBDB6A8C /* OggStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OggStream.h"; path = "OggStream.h"; sourceTree = ""; }; + 3DCE6F7FA987DA2932E7F403 /* Paula.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Paula.cpp"; path = "Paula.cpp"; sourceTree = ""; }; + 841E48B2F08C9D3139765831 /* Paula.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Paula.h"; path = "Paula.h"; sourceTree = ""; }; + BE1400C42AD9FEB3F33E2F7E /* Resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Resampler.h"; path = "Resampler.h"; sourceTree = ""; }; + 5858A90E44D59C516D529D65 /* RowVisitor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "RowVisitor.cpp"; path = "RowVisitor.cpp"; sourceTree = ""; }; + 3624E46B2276BB5B0B95F86B /* RowVisitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "RowVisitor.h"; path = "RowVisitor.h"; sourceTree = ""; }; + 8F99FC9A7BEBD38A640A119B /* S3MTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "S3MTools.cpp"; path = "S3MTools.cpp"; sourceTree = ""; }; + 16CE421702B5040FAB056B2C /* S3MTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "S3MTools.h"; path = "S3MTools.h"; sourceTree = ""; }; + E09B95BF4C0C9838152B12C1 /* SampleFormatBRR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatBRR.cpp"; path = "SampleFormatBRR.cpp"; sourceTree = ""; }; + 5289B72D3E0708C727FFC55E /* SampleFormatFLAC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatFLAC.cpp"; path = "SampleFormatFLAC.cpp"; sourceTree = ""; }; + 457124B5B1E1262E7A00A1B6 /* SampleFormatMP3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMP3.cpp"; path = "SampleFormatMP3.cpp"; sourceTree = ""; }; + 0E1850967A8A92B2C31EC836 /* SampleFormatMediaFoundation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMediaFoundation.cpp"; path = "SampleFormatMediaFoundation.cpp"; sourceTree = ""; }; + 809B76856C19C71E551185B6 /* SampleFormatOpus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatOpus.cpp"; path = "SampleFormatOpus.cpp"; sourceTree = ""; }; + CEEE1AF83A5F1D71037E97F9 /* SampleFormatSFZ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatSFZ.cpp"; path = "SampleFormatSFZ.cpp"; sourceTree = ""; }; + 72F466285E9DCE578733EAD6 /* SampleFormatVorbis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatVorbis.cpp"; path = "SampleFormatVorbis.cpp"; sourceTree = ""; }; + 4905B7C9B56A4A503E43EC28 /* SampleFormats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormats.cpp"; path = "SampleFormats.cpp"; sourceTree = ""; }; + 27A6836F13F85A5FFC16986F /* SampleIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleIO.cpp"; path = "SampleIO.cpp"; sourceTree = ""; }; + AED4EDD49ABBAFCC430C16EA /* SampleIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleIO.h"; path = "SampleIO.h"; sourceTree = ""; }; + 1CF3716B08DA3363B12A9A80 /* Snd_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Snd_defs.h"; path = "Snd_defs.h"; sourceTree = ""; }; + 7D71C386E935C276B29BF240 /* Snd_flt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_flt.cpp"; path = "Snd_flt.cpp"; sourceTree = ""; }; + 6E26634B5A0D2543035E8B60 /* Snd_fx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_fx.cpp"; path = "Snd_fx.cpp"; sourceTree = ""; }; + 732F922ADFF3901AA859C1E4 /* Sndfile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndfile.cpp"; path = "Sndfile.cpp"; sourceTree = ""; }; + BAF2DE1426AC49BFAF0B6499 /* Sndfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Sndfile.h"; path = "Sndfile.h"; sourceTree = ""; }; + 85392DCF7120EFC61A7155E4 /* Sndmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndmix.cpp"; path = "Sndmix.cpp"; sourceTree = ""; }; + A91DFCF615E458135E3FE775 /* SoundFilePlayConfig.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SoundFilePlayConfig.cpp"; path = "SoundFilePlayConfig.cpp"; sourceTree = ""; }; + 3EEBE378AA26443CB31BC1CB /* SoundFilePlayConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SoundFilePlayConfig.h"; path = "SoundFilePlayConfig.h"; sourceTree = ""; }; + 21C53F500DAC0148B6FC6765 /* Tables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tables.cpp"; path = "Tables.cpp"; sourceTree = ""; }; + A8A4F0A194E0F30BFDF20B03 /* Tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tables.h"; path = "Tables.h"; sourceTree = ""; }; + 4BEBF812B7AFF702801528CD /* Tagging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tagging.cpp"; path = "Tagging.cpp"; sourceTree = ""; }; + 92D834D0FE919F7A87F1B954 /* Tagging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tagging.h"; path = "Tagging.h"; sourceTree = ""; }; + 296C1CDD95301BCD5E964B97 /* TinyFFT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "TinyFFT.cpp"; path = "TinyFFT.cpp"; sourceTree = ""; }; + F08926175C4391C1E5A2AB9B /* TinyFFT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "TinyFFT.h"; path = "TinyFFT.h"; sourceTree = ""; }; + D42F6A6DC081415DA9A07E6D /* UMXTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UMXTools.cpp"; path = "UMXTools.cpp"; sourceTree = ""; }; + 1B0F5CBE07F61DB6B04684D3 /* UMXTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UMXTools.h"; path = "UMXTools.h"; sourceTree = ""; }; + 7B05F1FAE76A84817043265A /* UpgradeModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UpgradeModule.cpp"; path = "UpgradeModule.cpp"; sourceTree = ""; }; + E5DEC734D1309F24BA4FDC34 /* WAVTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WAVTools.cpp"; path = "WAVTools.cpp"; sourceTree = ""; }; + ECC5B05DD8AC725581FDD872 /* WAVTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WAVTools.h"; path = "WAVTools.h"; sourceTree = ""; }; + EC12C2A4582D2546A14F35DA /* WindowedFIR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WindowedFIR.cpp"; path = "WindowedFIR.cpp"; sourceTree = ""; }; + F3748A1D5F044C0868002D20 /* WindowedFIR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WindowedFIR.h"; path = "WindowedFIR.h"; sourceTree = ""; }; + 64F93AC4D0BD39B499236A7E /* XMTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "XMTools.cpp"; path = "XMTools.cpp"; sourceTree = ""; }; + E240B5764EFA1F21D7593AFB /* XMTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "XMTools.h"; path = "XMTools.h"; sourceTree = ""; }; + 06F4DC88F245B478DB64F188 /* load_j2b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "load_j2b.cpp"; path = "load_j2b.cpp"; sourceTree = ""; }; + 9EE9FE588A926688B3288207 /* mod_specifications.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mod_specifications.cpp"; path = "mod_specifications.cpp"; sourceTree = ""; }; + E51808F3D196588CBA8E1624 /* mod_specifications.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mod_specifications.h"; path = "mod_specifications.h"; sourceTree = ""; }; + 4E3CBD933AB9B0D66336B1EA /* modcommand.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modcommand.cpp"; path = "modcommand.cpp"; sourceTree = ""; }; + AC92A20798E479F78103B707 /* modcommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modcommand.h"; path = "modcommand.h"; sourceTree = ""; }; + AEA171F21ABCD49363DEE427 /* modsmp_ctrl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modsmp_ctrl.cpp"; path = "modsmp_ctrl.cpp"; sourceTree = ""; }; + 356B2321A1FAE40BAAF6C523 /* modsmp_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modsmp_ctrl.h"; path = "modsmp_ctrl.h"; sourceTree = ""; }; + FF6B08FBEBBCF33C1421E2FE /* opal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "opal.h"; path = "opal.h"; sourceTree = ""; }; + 4E33DC6DBAF7DA5D835D0B28 /* pattern.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "pattern.cpp"; path = "pattern.cpp"; sourceTree = ""; }; + 4CF80A74B8B1751E411190F8 /* pattern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "pattern.h"; path = "pattern.h"; sourceTree = ""; }; + 2CD09BE2184EEC7B0146AA13 /* patternContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "patternContainer.cpp"; path = "patternContainer.cpp"; sourceTree = ""; }; + 731B98FE5F2E985708187544 /* patternContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "patternContainer.h"; path = "patternContainer.h"; sourceTree = ""; }; + FB844A6967A13C5A3079A9C7 /* DigiBoosterEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DigiBoosterEcho.cpp"; path = "DigiBoosterEcho.cpp"; sourceTree = ""; }; + B94C55CD255EFD73AEAF8FB3 /* DigiBoosterEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DigiBoosterEcho.h"; path = "DigiBoosterEcho.h"; sourceTree = ""; }; + ACAFEFF218EB4FB621E0CC45 /* LFOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "LFOPlugin.cpp"; path = "LFOPlugin.cpp"; sourceTree = ""; }; + 330BA2329F7BA4AB689A1E34 /* LFOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "LFOPlugin.h"; path = "LFOPlugin.h"; sourceTree = ""; }; + 3289175E9EEEAAE427C74CBD /* OpCodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OpCodes.h"; path = "OpCodes.h"; sourceTree = ""; }; + 0B2F79D67740217D0092B3BC /* PlugInterface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PlugInterface.cpp"; path = "PlugInterface.cpp"; sourceTree = ""; }; + 89F0F5FAF5B652173E12E179 /* PlugInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PlugInterface.h"; path = "PlugInterface.h"; sourceTree = ""; }; + C7D6FC9A33E8A441BC393781 /* PluginManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PluginManager.cpp"; path = "PluginManager.cpp"; sourceTree = ""; }; + 8EC05A9BFA86B7B743E2451A /* PluginManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginManager.h"; path = "PluginManager.h"; sourceTree = ""; }; + 9D8CD877099E801E92EF125E /* PluginMixBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginMixBuffer.h"; path = "PluginMixBuffer.h"; sourceTree = ""; }; + EF376D1A5BFEC936A4595899 /* PluginStructs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginStructs.h"; path = "PluginStructs.h"; sourceTree = ""; }; + 54A183C0404AEBEF69E0066F /* SymMODEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SymMODEcho.cpp"; path = "SymMODEcho.cpp"; sourceTree = ""; }; + 1B6B6FA307E9BF3CF0E07DD4 /* SymMODEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SymMODEcho.h"; path = "SymMODEcho.h"; sourceTree = ""; }; + C4E70722B0906F51D9268BD0 /* Chorus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Chorus.cpp"; path = "Chorus.cpp"; sourceTree = ""; }; + 8B554F0D77D39FA660CB5D3E /* Chorus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Chorus.h"; path = "Chorus.h"; sourceTree = ""; }; + 41E409EF2D23B46AD6A5909C /* Compressor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Compressor.cpp"; path = "Compressor.cpp"; sourceTree = ""; }; + 5F0FF7854BA3EC2DB46746E2 /* Compressor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Compressor.h"; path = "Compressor.h"; sourceTree = ""; }; + DE1112E34A23BA89D3744CC9 /* DMOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOPlugin.cpp"; path = "DMOPlugin.cpp"; sourceTree = ""; }; + E549E809511045269A6BD388 /* DMOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOPlugin.h"; path = "DMOPlugin.h"; sourceTree = ""; }; + 8484D9DE7018CF86D9DC283B /* DMOUtils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOUtils.cpp"; path = "DMOUtils.cpp"; sourceTree = ""; }; + CBCA9485B773FCB4E0091834 /* DMOUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOUtils.h"; path = "DMOUtils.h"; sourceTree = ""; }; + 54CBC7A2400A721EE98C4E50 /* Distortion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Distortion.cpp"; path = "Distortion.cpp"; sourceTree = ""; }; + 1B46492F07DA3ED7709E988B /* Distortion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Distortion.h"; path = "Distortion.h"; sourceTree = ""; }; + 2893628C1411B325FD0871BD /* Echo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Echo.cpp"; path = "Echo.cpp"; sourceTree = ""; }; + 6FEF99205B029A7904EC7666 /* Echo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Echo.h"; path = "Echo.h"; sourceTree = ""; }; + EC8D4BB45854A8D0A1AF3633 /* Flanger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Flanger.cpp"; path = "Flanger.cpp"; sourceTree = ""; }; + EA70EA5456AC4A185FA1C7A7 /* Flanger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Flanger.h"; path = "Flanger.h"; sourceTree = ""; }; + FA2F3B8AE6D8A2B90F6FBE38 /* Gargle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Gargle.cpp"; path = "Gargle.cpp"; sourceTree = ""; }; + 411887C82D96D761168E95F9 /* Gargle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Gargle.h"; path = "Gargle.h"; sourceTree = ""; }; + 3093C85D9CAFBA4E658727BC /* I3DL2Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "I3DL2Reverb.cpp"; path = "I3DL2Reverb.cpp"; sourceTree = ""; }; + 378775ABA3981D522CEAAF91 /* I3DL2Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "I3DL2Reverb.h"; path = "I3DL2Reverb.h"; sourceTree = ""; }; + 8EC2AA59FA88077643E495D8 /* ParamEq.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ParamEq.cpp"; path = "ParamEq.cpp"; sourceTree = ""; }; + 15F6F9FD81315AC18A26D750 /* ParamEq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ParamEq.h"; path = "ParamEq.h"; sourceTree = ""; }; + 17463232836224234C3A9190 /* WavesReverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WavesReverb.cpp"; path = "WavesReverb.cpp"; sourceTree = ""; }; + 5E543748CA65DFEE53B7712E /* WavesReverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WavesReverb.h"; path = "WavesReverb.h"; sourceTree = ""; }; + C4C5B491B0AC768959FDDCA6 /* tuning.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuning.cpp"; path = "tuning.cpp"; sourceTree = ""; }; + 22A201180EDE048277F01C79 /* tuning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuning.h"; path = "tuning.h"; sourceTree = ""; }; + 4BA23431372085CA20184362 /* tuningCollection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuningCollection.cpp"; path = "tuningCollection.cpp"; sourceTree = ""; }; + 412D19EF2D7FF0DE169E2DEF /* tuningbase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningbase.h"; path = "tuningbase.h"; sourceTree = ""; }; + 74A9B22760BCB28009A68F6D /* tuningcollection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningcollection.h"; path = "tuningcollection.h"; sourceTree = ""; }; + C8D83AE1343ECE67BD167040 /* algorithm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "algorithm.hpp"; path = "algorithm.hpp"; sourceTree = ""; }; + AE2D12DB1ABDD3C523B9B4DD /* alloc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "alloc.hpp"; path = "alloc.hpp"; sourceTree = ""; }; + 2C83CD5C1817C30481DB1CB9 /* arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "arithmetic_shift.hpp"; path = "arithmetic_shift.hpp"; sourceTree = ""; }; + C6C8B4D9325876C43B5457DC /* array.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "array.hpp"; path = "array.hpp"; sourceTree = ""; }; + 5F0AC635CBCEC4259434F5EF /* bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "bit.hpp"; path = "bit.hpp"; sourceTree = ""; }; + A410AA6490B91194B94F2D13 /* check_platform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "check_platform.hpp"; path = "check_platform.hpp"; sourceTree = ""; }; + B1AEFC671DCBEE58E6A25BC6 /* compiletime_warning.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "compiletime_warning.hpp"; path = "compiletime_warning.hpp"; sourceTree = ""; }; + 1FB774638B7DD17FD4D85FE2 /* constexpr_throw.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "constexpr_throw.hpp"; path = "constexpr_throw.hpp"; sourceTree = ""; }; + A1D4208A8D5114CDB6CE14E1 /* detect.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect.hpp"; path = "detect.hpp"; sourceTree = ""; }; + F4F56CD960BCC9F5A9175858 /* detect_compiler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_compiler.hpp"; path = "detect_compiler.hpp"; sourceTree = ""; }; + D5B53E0F412641880A45BB10 /* detect_libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libc.hpp"; path = "detect_libc.hpp"; sourceTree = ""; }; + C7BE1EAB33FA7E6E3CEFFBFD /* detect_libcxx.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libcxx.hpp"; path = "detect_libcxx.hpp"; sourceTree = ""; }; + 417B383AADE0CBC036B96D99 /* detect_os.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_os.hpp"; path = "detect_os.hpp"; sourceTree = ""; }; + 60D6116ACC11722DD506EFBC /* detect_quirks.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_quirks.hpp"; path = "detect_quirks.hpp"; sourceTree = ""; }; + 207E3D6D8CB99D3095AE1AC0 /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 521EADD8BE38107A075B200E /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + EB8F06BED70CFA00008AFA14 /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + B230D6779E82AD6787A1EA77 /* math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "math.hpp"; path = "math.hpp"; sourceTree = ""; }; + E3C619D9CF430D1CF8C00D30 /* memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "memory.hpp"; path = "memory.hpp"; sourceTree = ""; }; + 90676081FCCCF30785A595E0 /* namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "namespace.hpp"; path = "namespace.hpp"; sourceTree = ""; }; + D890886444ABEB058DCDFB99 /* numeric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "numeric.hpp"; path = "numeric.hpp"; sourceTree = ""; }; + 88D7487BF4F1AB1C3D14BCB0 /* pointer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "pointer.hpp"; path = "pointer.hpp"; sourceTree = ""; }; + 107C4246FCF992DFE5F15077 /* preprocessor.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "preprocessor.hpp"; path = "preprocessor.hpp"; sourceTree = ""; }; + 7E5D27C1EA988784F38D0414 /* saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_cast.hpp"; path = "saturate_cast.hpp"; sourceTree = ""; }; + 74338A1960DCF14889720DC8 /* saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_round.hpp"; path = "saturate_round.hpp"; sourceTree = ""; }; + 4DE0AE57395DA29A62DAA2AE /* secure.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "secure.hpp"; path = "secure.hpp"; sourceTree = ""; }; + 21BC96400D508CE87614E69C /* semantic_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "semantic_version.hpp"; path = "semantic_version.hpp"; sourceTree = ""; }; + 532BE545BFF14162084DD0C4 /* source_location.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "source_location.hpp"; path = "source_location.hpp"; sourceTree = ""; }; + 9ECD7E188A1F5608733E9318 /* span.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "span.hpp"; path = "span.hpp"; sourceTree = ""; }; + B220E66A1E8A7BCDA7CD2978 /* tests_base_arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_arithmetic_shift.hpp"; path = "tests_base_arithmetic_shift.hpp"; sourceTree = ""; }; + 6C1695ED58C0CAFC4191D217 /* tests_base_bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_bit.hpp"; path = "tests_base_bit.hpp"; sourceTree = ""; }; + 59102DB7C5F717ADCEE51929 /* tests_base_math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_math.hpp"; path = "tests_base_math.hpp"; sourceTree = ""; }; + 04CD2A2AF0CDBEA419962B29 /* tests_base_saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_cast.hpp"; path = "tests_base_saturate_cast.hpp"; sourceTree = ""; }; + 23EA70F68F0885C3D8D58AD5 /* tests_base_saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_round.hpp"; path = "tests_base_saturate_round.hpp"; sourceTree = ""; }; + 8802D44F74EE6BBFDD642B12 /* tests_base_wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_wrapping_divide.hpp"; path = "tests_base_wrapping_divide.hpp"; sourceTree = ""; }; + 74C443CAE0DEA66B2901B7FF /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 48C43AE9B4DE9D8AFD00AE1E /* version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "version.hpp"; path = "version.hpp"; sourceTree = ""; }; + A0160B270CDD67435538F6A5 /* wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "wrapping_divide.hpp"; path = "wrapping_divide.hpp"; sourceTree = ""; }; + 4D7EC34B39E68919A2519E2F /* base64.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64.hpp"; path = "base64.hpp"; sourceTree = ""; }; + E23113E34EA2155C17C18FE4 /* base64url.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64url.hpp"; path = "base64url.hpp"; sourceTree = ""; }; + 91E6DDC4FD759FAF067280C7 /* hex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hex.hpp"; path = "hex.hpp"; sourceTree = ""; }; + 686844B754127AC63DE381E1 /* tests_binary.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_binary.hpp"; path = "tests_binary.hpp"; sourceTree = ""; }; + FC98C9E068288BCB71246CE3 /* libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libc.hpp"; path = "libc.hpp"; sourceTree = ""; }; + 1AA8475B06FA1E4BEF185C5B /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + 11B1C905FD1890D36684A4E9 /* windows.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows.hpp"; path = "windows.hpp"; sourceTree = ""; }; + 3BBCE0F827A3A2F0D0F3080E /* crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crc.hpp"; path = "crc.hpp"; sourceTree = ""; }; + C9CDD777B5763FA7DE0C5B26 /* tests_crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crc.hpp"; path = "tests_crc.hpp"; sourceTree = ""; }; + 383FD9F9A4AFDB726DCE55FB /* exception.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception.hpp"; path = "exception.hpp"; sourceTree = ""; }; + EF49E2F2DBC6D5350444D649 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hash.hpp"; path = "hash.hpp"; sourceTree = ""; }; + 7922327FE5B1F369EEADD481 /* jwk.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "jwk.hpp"; path = "jwk.hpp"; sourceTree = ""; }; + FC9CBB2BE846F13AD117F955 /* tests_crypto.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crypto.hpp"; path = "tests_crypto.hpp"; sourceTree = ""; }; + 38B85F9EA4472189AD4302A1 /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + 38BA5C18A480B934EDDB4797 /* nlohmann_json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "nlohmann_json.hpp"; path = "nlohmann_json.hpp"; sourceTree = ""; }; + 3BF71195A7BD6EB1F018FD13 /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 249351A190F8E42719D18600 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + 99950A86852C4D3B2EE1C33B /* tests_endian_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_floatingpoint.hpp"; path = "tests_endian_floatingpoint.hpp"; sourceTree = ""; }; + 4B9CFB3337728231201C9D84 /* tests_endian_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_integer.hpp"; path = "tests_endian_integer.hpp"; sourceTree = ""; }; + 99C6469B8505F1162E88CD48 /* environment.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "environment.hpp"; path = "environment.hpp"; sourceTree = ""; }; + EF07816EDBC7111344E5F91D /* exception_text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception_text.hpp"; path = "exception_text.hpp"; sourceTree = ""; }; + 1750259C83C267B8CC569D3C /* default_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_floatingpoint.hpp"; path = "default_floatingpoint.hpp"; sourceTree = ""; }; + 0F5372197B6F640A4447D177 /* default_formatter.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_formatter.hpp"; path = "default_formatter.hpp"; sourceTree = ""; }; + CB369E23374846CAC099D809 /* default_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_integer.hpp"; path = "default_integer.hpp"; sourceTree = ""; }; + 2D5B373F19EF2CE782B3869B /* default_string.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_string.hpp"; path = "default_string.hpp"; sourceTree = ""; }; + A7E993BB134F27429C27C91A /* helpers.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "helpers.hpp"; path = "helpers.hpp"; sourceTree = ""; }; + 1B96D63C87FB69C310D40B9C /* message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message.hpp"; path = "message.hpp"; sourceTree = ""; }; + C1FC9ACBAD9090731655EA27 /* message_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message_macros.hpp"; path = "message_macros.hpp"; sourceTree = ""; }; + 84373932709FFFFFD90A1416 /* simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple.hpp"; path = "simple.hpp"; sourceTree = ""; }; + 7A680999663D514C8FEC9048 /* simple_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_floatingpoint.hpp"; path = "simple_floatingpoint.hpp"; sourceTree = ""; }; + 6C873621581B2CC9C1DF857D /* simple_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_integer.hpp"; path = "simple_integer.hpp"; sourceTree = ""; }; + 0BA1026A77DC622D80D1DFBC /* simple_spec.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_spec.hpp"; path = "simple_spec.hpp"; sourceTree = ""; }; + 1B77EE03074D7501F0F68F54 /* tests_format_message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_message.hpp"; path = "tests_format_message.hpp"; sourceTree = ""; }; + 421E02E0AEE6CF637777D875 /* tests_format_simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_simple.hpp"; path = "tests_format_simple.hpp"; sourceTree = ""; }; + F8F7E0CBE449B8BBCD68F5CB /* json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "json.hpp"; path = "json.hpp"; sourceTree = ""; }; + CD7F285BB9FC1B9EE2791CB2 /* mutex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mutex.hpp"; path = "mutex.hpp"; sourceTree = ""; }; + 8845F536F4569DDD7DA82F1D /* windows_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows_version.hpp"; path = "windows_version.hpp"; sourceTree = ""; }; + 4C10F0FB38E537AF619477AB /* out_of_memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "out_of_memory.hpp"; path = "out_of_memory.hpp"; sourceTree = ""; }; + 3DEE388F296B2CD252E82CE6 /* parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "parse.hpp"; path = "parse.hpp"; sourceTree = ""; }; + F44EB7FAE08D617689103EA8 /* tests_parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_parse.hpp"; path = "tests_parse.hpp"; sourceTree = ""; }; + 4D400B14B95A6EB5027D7E49 /* crand.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crand.hpp"; path = "crand.hpp"; sourceTree = ""; }; + 34206415A0310CBC29839EFB /* default_engines.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_engines.hpp"; path = "default_engines.hpp"; sourceTree = ""; }; + B902D65EA56A9C2C0ED6B042 /* device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "device.hpp"; path = "device.hpp"; sourceTree = ""; }; + 61A63F304D0E06FEB6791A14 /* engine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine.hpp"; path = "engine.hpp"; sourceTree = ""; }; + 98CF021D844D53B66D45114E /* engine_lcg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine_lcg.hpp"; path = "engine_lcg.hpp"; sourceTree = ""; }; + 07C31E48F32AE5155C96F92B /* random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "random.hpp"; path = "random.hpp"; sourceTree = ""; }; + C9EE001BB56BF45DDEE8F471 /* seed.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "seed.hpp"; path = "seed.hpp"; sourceTree = ""; }; + 009F1149EC484758D5194F73 /* tests_random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_random.hpp"; path = "tests_random.hpp"; sourceTree = ""; }; + BEE08A50AA48511E13B46534 /* buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "buffer.hpp"; path = "buffer.hpp"; sourceTree = ""; }; + 829CEFD9EE64BD5DB7F5C56F /* tests_string_buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_buffer.hpp"; path = "tests_string_buffer.hpp"; sourceTree = ""; }; + FED8A4F7EAAE2BF5D3584648 /* tests_string_utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_utility.hpp"; path = "tests_string_utility.hpp"; sourceTree = ""; }; + 57D58DC2C3EFF0630C1201F8 /* types.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "types.hpp"; path = "types.hpp"; sourceTree = ""; }; + D8CCA06E443234F5CD0AD6CD /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 7F2DA6AFEB3E4E567490E095 /* convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "convert.hpp"; path = "convert.hpp"; sourceTree = ""; }; + C5E1A3C5B175996D1A3AF321 /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + 6E4685C95A48C9D943CBBFD2 /* tests_string_convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_convert.hpp"; path = "tests_string_convert.hpp"; sourceTree = ""; }; + 0BF64FA0F79F85AFE0708DCA /* system_error.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "system_error.hpp"; path = "system_error.hpp"; sourceTree = ""; }; + 89F40CFB7546E4EA5E6521FB /* test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test.hpp"; path = "test.hpp"; sourceTree = ""; }; + 2FEA2ACD9B5A2D466479A7CE /* test_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test_macros.hpp"; path = "test_macros.hpp"; sourceTree = ""; }; + CE121DFCBA64F4EBA38331FC /* guid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "guid.hpp"; path = "guid.hpp"; sourceTree = ""; }; + D392487ABF263E2228EB97D6 /* tests_uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid.hpp"; path = "tests_uuid.hpp"; sourceTree = ""; }; + F854942DE4A66B1DCDC5A82D /* uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "uuid.hpp"; path = "uuid.hpp"; sourceTree = ""; }; + 08A98847F4AACC57DD2DC350 /* tests_uuid_namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid_namespace.hpp"; path = "tests_uuid_namespace.hpp"; sourceTree = ""; }; + 9624282C82E4B8D0EB01A1DB /* 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 +797,7 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 3C7629FAA88B9750314871B1 /* Frameworks */ = { + FF09D9B06B1F4707F4DB2068 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -622,12 +814,13 @@ isa = PBXGroup; children = ( 6C4F0095D8BBBB8FA1AF53ED /* common */, - BFD4FDA32BE22B8AB4C82775 /* libopenmpt */, - 4FEAB79B3BFA636CA4B3C88A /* soundbase */, - 5A30E327C6F216B20FA3A53E /* sounddsp */, - E961CB335524FFBD9ED48D4A /* soundlib */, - 9E6A03080A2D379253DDC51E /* Products */, - B533D44521F607D06AA6965C /* Projects */, + BCF3358A28016470B1E75F5B /* libopenmpt */, + AC9DB9C198AD65920167CAB0 /* soundbase */, + 176C9D76832ED100CCDE5F8D /* sounddsp */, + EF39A81C5BFCDBA6A4AC6A33 /* soundlib */, + 989CAF37842B39012D4A4DFC /* src */, + EADBDCA4569E102F9F4E9FBB /* Products */, + B8088B4824CBBED26D7B4D5F /* Projects */, ); name = "libopenmpt"; path = "."; @@ -637,339 +830,758 @@ isa = PBXGroup; children = ( B3EA35381FAF3428E81465F2 /* BuildSettings.h */, - C8BB03B6B40DDBA59D2C18B6 /* CompilerDetect.h */, - DF79CCBECBE1928C344DA7A2 /* ComponentManager.cpp */, - 0DE7DDE97901418BC223511F /* ComponentManager.h */, - 29C2B344957B1EEF1EDB38C9 /* Endianness.h */, - 7188A7C7DD4CA6B7A6B2D681 /* FileReader.cpp */, - 789C40CDE455AB776DB5C551 /* FileReader.h */, - DB7781B2C7C958A2B0E895B2 /* FileReaderFwd.h */, - 469D619132EE4CD35B523B95 /* FlagSet.h */, - C444C007B080C3711993DB68 /* Logging.cpp */, - 4B472BF53798163760FC04F9 /* Logging.h */, - 242D314090E69BEA1946B6C4 /* Profiler.cpp */, - EB2F52B3579EA732A0876232 /* Profiler.h */, - 45347CD8311B3ED0DA6BA4ED /* misc_util.cpp */, - 0C9B7D60F8D680CA61E998C1 /* misc_util.h */, - C1D8BBFD2D47117D7630CC7C /* mptAlloc.h */, - 8A4F1515768B187FDF9D3076 /* mptAssert.h */, - 7AFA3D21664C15114F6B5221 /* mptBaseMacros.h */, - C38BA8062F50A7F6F8B5D7C0 /* mptBaseTypes.h */, - 016662BA6D2A61AA36909174 /* mptBaseUtils.h */, - 0FED58597BD0679984D395D5 /* mptCRC.h */, - 48006EA3B4C46C937D2A9D5D /* mptException.h */, - 8FBD12C8FBD7756944FA85FD /* mptExceptionText.h */, - 87F8F9C673DFBBBE1C3022DC /* mptFileIO.cpp */, - CE66D9C8BAA2DC3223B5F429 /* mptFileIO.h */, - 8BB5029B7706EEDCA06ADC9E /* mptIO.cpp */, - D2C19A61BEE764C8A72DEA93 /* mptIO.h */, - 6CE42646D8A82536A10E5600 /* mptLibrary.cpp */, - 0A01842376BAEECDFF1909A8 /* mptLibrary.h */, - B090B9769CCCBCE005DFD4D7 /* mptMemory.h */, - ECA9A22F5818F8AEA101B3AE /* mptMutex.h */, - D81B905BC46C7B9DEDD0695F /* mptOS.cpp */, - DF3010EFCB56DA55B49C5F21 /* mptOS.h */, - 42EAD35FAEA33E0A370359E4 /* mptOSError.h */, - A92ACF5915BA90441EB6715C /* mptOSException.h */, - 79EBBC0F6568B0528EE5B066 /* mptPathString.cpp */, - 40C6EBAA2C18C39A153700AB /* mptPathString.h */, - 3A2051662607135ECF57797B /* mptRandom.cpp */, - 38BA47EA24F64A548D08634B /* mptRandom.h */, - ABB43B489705278AC069154C /* mptSpan.h */, - 4DCE2ABD39B5ECB4E20553D2 /* mptString.cpp */, - 14132ED7004F314169614938 /* mptString.h */, - 8BC5B2E4772D79B2E0988DC8 /* mptStringBuffer.cpp */, - 097E1645F5FA09881E780A9C /* mptStringBuffer.h */, - 355A76D121C23C9F8A2D51B5 /* mptStringFormat.cpp */, - 7CEEB443686BA88691E8A89A /* mptStringFormat.h */, - 0BAA820277C4E5A3C0E6F537 /* mptStringParse.cpp */, - 928059B2FE0F1B9D070CFCB4 /* mptStringParse.h */, - F8E2355B649CA005EDFBBADF /* mptThread.h */, - 0CC952A87882BD5201E2D72C /* mptTime.cpp */, - 9319403DFF8795BC487150BC /* mptTime.h */, - 18FB305284B49BFC0D14B6D6 /* mptUUID.cpp */, - 9F5892890BC7E70854B0A208 /* mptUUID.h */, - 990A32C5054692880E3B0F18 /* serialization_utils.cpp */, - E0C6C6E84C37C961155643EA /* serialization_utils.h */, - 7E6F72886AC05DCA93244C8C /* stdafx.h */, - F784BBFA633E26A5EC9D407F /* version.cpp */, - BEDEE25B2A4D38DB7336F3DA /* version.h */, - 00C36B686C522D53754E0E6B /* versionNumber.h */, + 5DDA4225494209F3B2AD1D09 /* ComponentManager.cpp */, + E41C930DD0998650F9168764 /* ComponentManager.h */, + A78448B4133EB35E9C9DCD38 /* Endianness.h */, + 6FE2766FDBA6755FA40CA629 /* FileReader.cpp */, + F65ED53C621840E7EB775AC1 /* FileReader.h */, + 99113C54856313446E825054 /* FileReaderFwd.h */, + CD158EA1B96679E3E2CA67A5 /* FlagSet.h */, + 82AF67226EEB6A8CD7FD8283 /* Logging.cpp */, + 89EADC5C753BC89E9E9FB660 /* Logging.h */, + A2EFC5AF0EA9305A97084B34 /* Profiler.cpp */, + E93A381155A98D909E924890 /* Profiler.h */, + 4C98AFA3387F719BE1CFD7B8 /* misc_util.cpp */, + CA05257BB64128E51F5440DC /* misc_util.h */, + BFE3A15B2B52F7DA743BB2DA /* mptAlloc.h */, + 48BABC2F34F6BF999D08D890 /* mptAssert.h */, + 3894F8C224E6CFB20D050DC3 /* mptBaseMacros.h */, + AA70483816354728DF9A77F2 /* mptBaseTypes.h */, + FFBF31626B84305234EA601C /* mptBaseUtils.h */, + 4893B4B8347A76B0DDCADCCD /* mptFileIO.cpp */, + 4F5DFCE53B99FF4FA4AB1747 /* mptFileIO.h */, + CC1744E2B8682F24E1CC1DE6 /* mptIO.cpp */, + D39FEC8CBFC5B6F3A80B3CBF /* mptIO.h */, + 644C64E5D01063D59976939F /* mptLibrary.cpp */, + ABC705E51781708FA0E08A69 /* mptLibrary.h */, + 3187DC931DC3DFFD86D5F7F4 /* mptMemory.h */, + 4D54105FB9C265DE02AC20DE /* mptMutex.h */, + 197ED1A205CFBCE42E33ABA6 /* mptOS.cpp */, + D71F5F7EC34529E5AC8BAEB0 /* mptOS.h */, + 482B33D7B4BAF4C1BDB6D5D9 /* mptOSException.h */, + F8FFA039E47C947C0DFA9490 /* mptPathString.cpp */, + FFAE7297EB004A87D41F8797 /* mptPathString.h */, + 39CD38BA25B4FAB1CE0461CF /* mptRandom.cpp */, + 771B12226357158CCC692D83 /* mptRandom.h */, + 8A8D3F737674016B1FC56788 /* mptString.cpp */, + 11DF9F29FD1AA393662DBB8A /* mptString.h */, + 883EBBE474A681B2DD1196C8 /* mptStringBuffer.cpp */, + 0FA2BEADFB1EB2F0249CB204 /* mptStringBuffer.h */, + 32D37ED11E3B459F87A659B5 /* mptStringFormat.cpp */, + 39046168258154AB4EFE54BF /* mptStringFormat.h */, + 6877B1BCD491145E1DB424F2 /* mptStringParse.cpp */, + AF52CB081BE28CF324DE6D0B /* mptStringParse.h */, + 9798AB1383D4AE7DECE6C674 /* mptThread.h */, + 223343AE0E6F461877815E0F /* mptTime.cpp */, + 2906C3D61557AE183EBB9CDA /* mptTime.h */, + 2E6521581AA124C283B33CB9 /* mptUUID.cpp */, + 35451523219600654AFAEE26 /* mptUUID.h */, + B826E652A4A436EC8D9CF483 /* serialization_utils.cpp */, + 1D73D10C89E3D38552024E0E /* serialization_utils.h */, + 9B74965A87C5819CB029705E /* stdafx.h */, + F4502D4D600A98F7E969B2D1 /* version.cpp */, + 7B878772E7F5DCF130DF97F1 /* version.h */, + 862D8FBAF2BC50A5FBB831BD /* versionNumber.h */, ); name = "common"; path = "../../common"; sourceTree = ""; }; - BFD4FDA32BE22B8AB4C82775 /* libopenmpt */ = { + BCF3358A28016470B1E75F5B /* libopenmpt */ = { isa = PBXGroup; children = ( - FF7D561FEBFA496214784A76 /* libopenmpt.h */, - A12227FB8D8AEDC8F6F501DF /* libopenmpt.hpp */, - E0A38FA6CCB68FFF75A06CEC /* libopenmpt_c.cpp */, - 51358D5ABD70ED1DC6656AAD /* libopenmpt_config.h */, - AB8C8BC6970ADC5F80029AF7 /* libopenmpt_cxx.cpp */, - F0CBC8E2DCDEC83B85C8A528 /* libopenmpt_ext.h */, - D2619CDABEDFEC73A7D7AA0B /* libopenmpt_ext.hpp */, - 00F1936D6C023C14F553CE53 /* libopenmpt_ext_impl.cpp */, - 9E4A50270A5CF8CD93AD8A0D /* libopenmpt_ext_impl.hpp */, - EB31548F576DB452606231E2 /* libopenmpt_impl.cpp */, - 1278B7FF7EB317C387A89452 /* libopenmpt_impl.hpp */, - 5F96AEB5CB5C0BD214B89934 /* libopenmpt_internal.h */, - 881BE943741C7DBE9DE4E942 /* libopenmpt_stream_callbacks_buffer.h */, - 5196A3873D016493E61CC9F8 /* libopenmpt_stream_callbacks_fd.h */, - E9072015D5DDA612BE87C165 /* libopenmpt_stream_callbacks_file.h */, - 6754160A53FD7D397C9399B8 /* libopenmpt_version.h */, + 1C50C87508CDBBB8314ABCCC /* libopenmpt.h */, + FEEF55B5EA571C8353C33099 /* libopenmpt.hpp */, + 7D3CA7A7694FA700123984ED /* libopenmpt_c.cpp */, + D7C59D9F4301FE624CF67AF2 /* libopenmpt_config.h */, + 88C0EB6B743E3C055D36FA9C /* libopenmpt_cxx.cpp */, + 8D64E0E37977E03C2261BD29 /* libopenmpt_ext.h */, + AF95FC7F9B134D19840B0BB1 /* libopenmpt_ext.hpp */, + FD16906969283810F279CA4F /* libopenmpt_ext_impl.cpp */, + 24AEA1AB90BF49521911DC91 /* libopenmpt_ext_impl.hpp */, + 68E1BAE0D41C1BA4DD119833 /* libopenmpt_impl.cpp */, + 8F271E51FB627E140458FBA3 /* libopenmpt_impl.hpp */, + 1C197FFB88DFDB17D13A6A7A /* libopenmpt_internal.h */, + A55432B09155C62ABA1D33AF /* libopenmpt_stream_callbacks_buffer.h */, + 9750BCAA83BB7CB62CD7E11B /* libopenmpt_stream_callbacks_fd.h */, + C6559EA8B22B25A69BD53FF9 /* libopenmpt_stream_callbacks_file.h */, + 84F35288709CBAB79932D636 /* libopenmpt_version.h */, ); name = "libopenmpt"; path = "../../libopenmpt"; sourceTree = ""; }; - 4FEAB79B3BFA636CA4B3C88A /* soundbase */ = { + AC9DB9C198AD65920167CAB0 /* soundbase */ = { isa = PBXGroup; children = ( - E94A3B16D5C72E59FE442F6D /* AudioSample.h */, - 376C68D9A325D3832C85ED5D /* Dither.h */, - E04519EDCC97F0DCB5B62DED /* MixSample.h */, - 83603E98EFD04011B8EFBA99 /* MixSampleConvert.h */, - 10C48C997CDEEF3AC50000CF /* SampleBuffer.h */, - C135F3922D505634767266C8 /* SampleFormat.h */, - 4E4E0060BA5FA80643B13A46 /* SampleFormatConverters.h */, - 97CCA6B8033DA931CC5B23BA /* SampleFormatCopy.h */, + 061DAD6CF299A0AF1B17A1C3 /* AudioSample.h */, + 3438DA2BA0F144D629515FB0 /* Dither.h */, + A67796EF92C96DDF7BE8AAEF /* MixSample.h */, + C00C49BC2C7D4B35F59BC5BD /* MixSampleConvert.h */, + CDD938BE39F49B5F8216ACF3 /* SampleBuffer.h */, + 7E4B9FB7EA650259338812ED /* SampleFormat.h */, + 4B74FC5BB785A40240D73642 /* SampleFormatConverters.h */, + 9D832DC109F42F3AD212AAC2 /* SampleFormatCopy.h */, ); name = "soundbase"; path = "../../soundbase"; sourceTree = ""; }; - 5A30E327C6F216B20FA3A53E /* sounddsp */ = { + 176C9D76832ED100CCDE5F8D /* sounddsp */ = { isa = PBXGroup; children = ( - 46183367B28688E6FB6F43E6 /* AGC.cpp */, - CD394DF7391D5C3742208A73 /* AGC.h */, - A639A31612A8F8955B91B395 /* DSP.cpp */, - 2494821B9077915B997ABF97 /* DSP.h */, - 90CB8F337C1C7B75A5806937 /* EQ.cpp */, - 5712F8F64338C25D2C7E4729 /* EQ.h */, - C4F5C613B0DC880B592DEF28 /* Reverb.cpp */, - 8B509D47778CA0B1E09EB8A8 /* Reverb.h */, + 03C1D77D6F2F2DFDB818E8FC /* AGC.cpp */, + 4A8F466AB67255AABF7583E6 /* AGC.h */, + 63E2472DCF509DAC183A58AC /* DSP.cpp */, + AAD87E2A16BC8D6A1FBFBBA6 /* DSP.h */, + ADD0B30599219F47C2858D09 /* EQ.cpp */, + 342C2EE32052F84909987D15 /* EQ.h */, + 614172B44D2834ACF6789AC9 /* Reverb.cpp */, + E810D732D44CDA9C3D5FF293 /* Reverb.h */, ); name = "sounddsp"; path = "../../sounddsp"; sourceTree = ""; }; - E961CB335524FFBD9ED48D4A /* soundlib */ = { + EF39A81C5BFCDBA6A4AC6A33 /* soundlib */ = { isa = PBXGroup; children = ( - 3C7C769D28106C4591D4C5F9 /* AudioCriticalSection.cpp */, - 8374A0D26F1D080298B32381 /* AudioCriticalSection.h */, - 4820202EB485B3B43D5E558D /* AudioReadTarget.h */, - 2770B7559334B6455C9AE60F /* BitReader.h */, - 234520938FD4E17D98D0C295 /* ChunkReader.h */, - 0AD00B1E76940A0E3FFA3AD8 /* Container.h */, - 81C3378A6DD637E316C014D0 /* ContainerMMCMP.cpp */, - 8B374EEFF79CE1758075834E /* ContainerPP20.cpp */, - A5CD504691351714FAA02B2A /* ContainerUMX.cpp */, - 60C9E97F4C31B04DB59CC463 /* ContainerXPK.cpp */, - 82966FC4EE5A6EB4B7C09E7E /* Dlsbank.cpp */, - 094AC98A75033435FE624E0F /* Dlsbank.h */, - 033046886FF44478385A7542 /* Fastmix.cpp */, - A976C22395C899137EE7D623 /* FloatMixer.h */, - BA75D59E26DB6825AFB30AFE /* ITCompression.cpp */, - 785621D1E47084722D939406 /* ITCompression.h */, - F445C353600AC2432970F20D /* ITTools.cpp */, - FB7426CE672E9178F08DAB52 /* ITTools.h */, - B3A411869F38072E08FD60E2 /* InstrumentExtensions.cpp */, - E1A6F598CD8DB79076DE1DAE /* IntMixer.h */, - E922BFF4D57496E4BE93D3F4 /* Load_669.cpp */, - 7ABCB9EE660E91DE4F2DCEEE /* Load_amf.cpp */, - A9723D6595C414557EE35165 /* Load_ams.cpp */, - 3A2F3980268110700FA04D80 /* Load_c67.cpp */, - 3FADA47D2BFF7B6D141EB97D /* Load_dbm.cpp */, - 626C67FACEFB28E5D7F709FD /* Load_digi.cpp */, - 3EEEA1E22A4079D2135FB6E2 /* Load_dmf.cpp */, - 2D1D0419196FDB08028E1819 /* Load_dsm.cpp */, - 08D8B6C2746778AD7D6359C5 /* Load_dsym.cpp */, - F2A55F16DEF73606C7167416 /* Load_dtm.cpp */, - 9FB35A128B05320274246F12 /* Load_far.cpp */, - EF83F00ADBD5C7FAC4F4040B /* Load_fmt.cpp */, - A2BF428A8E111A7A7730578A /* Load_gdm.cpp */, - C8156F5FB467464F9D86835F /* Load_imf.cpp */, - 2BE69F5F97AA9E4F6010CF19 /* Load_it.cpp */, - 74162BB8606802A849873FB8 /* Load_itp.cpp */, - 66A16AE852F341D83B127FE8 /* Load_mdl.cpp */, - 213FEC7A0D91C36AF6AF007B /* Load_med.cpp */, - 27D80507132ADDF6FC481A07 /* Load_mid.cpp */, - DE23C7BACA759EAAB394DBBA /* Load_mo3.cpp */, - C80574FBB4574BEB9D7688FB /* Load_mod.cpp */, - 1DECE55F093EBD4FF25CFA5F /* Load_mt2.cpp */, - 3AEFB64126418E310F60CB41 /* Load_mtm.cpp */, - BAE3374A26FE9AEB6F20AB7F /* Load_mus_km.cpp */, - 9EDE23268A30FB15734F3826 /* Load_okt.cpp */, - F2EE6B1DDE40430DC75F801D /* Load_plm.cpp */, - 3B3E749027904B8010AF8890 /* Load_psm.cpp */, - FE209F35EA727625D391B335 /* Load_ptm.cpp */, - A2D80BC78E2AE3B6774920C7 /* Load_s3m.cpp */, - 0258BF8EEEA9967ED7C8D38E /* Load_sfx.cpp */, - BE062679AA58FD6893773A79 /* Load_stm.cpp */, - A32656D88F782DC878976AD8 /* Load_stp.cpp */, - A7C3277113DE8A125C009BA6 /* Load_symmod.cpp */, - 1EDF51BD0A3129ADF34F66BD /* Load_uax.cpp */, - E77EEE5AD3D0C54ABCEF025B /* Load_ult.cpp */, - B010DAF39C62B1E38581EEF3 /* Load_wav.cpp */, - E9A325CB556824BB1ECE5485 /* Load_xm.cpp */, - B67C94FB2236FFA5AB951980 /* Loaders.h */, - 01A54485ED2138C8169F38DC /* MIDIEvents.cpp */, - 88BD923C740F6A2C5D2EA73C /* MIDIEvents.h */, - EC1C3DB0D89930F301173107 /* MIDIMacros.cpp */, - B33EA6149F907D0488AFBA14 /* MIDIMacros.h */, - 5C6B0284C8FAC36ED1F6A486 /* MPEGFrame.cpp */, - E37887224F3D861218A3B6DC /* MPEGFrame.h */, - 51385011BDFC4E0186627FCB /* Message.cpp */, - 8FE0A34DFB990EF884F928D2 /* Message.h */, - E9638FF8D5CB55C63E376ADC /* MixFuncTable.cpp */, - F02A9277DCA785BA052586CE /* MixFuncTable.h */, - F513060161825B80AA6B1680 /* Mixer.h */, - 884A9E2774B264F5DD1D790B /* MixerInterface.h */, - 78C9FA866446EEC98DC3EEDD /* MixerLoops.cpp */, - 3F58B7222BAA8E1214C9CB22 /* MixerLoops.h */, - 4031A658AC9639DF356FDBB7 /* MixerSettings.cpp */, - C7865D7E33A1C01F7CC3D0B3 /* MixerSettings.h */, - E78CF131D309E574FC86E588 /* ModChannel.cpp */, - 05E927AFF13AFF9EDA593CAF /* ModChannel.h */, - 02A29E0A6E073291F7DFD369 /* ModInstrument.cpp */, - 09DF9E1A75F901BCBE1B1250 /* ModInstrument.h */, - AF6196981BF1578324ED389B /* ModSample.cpp */, - 76BEF36AE282F25AABE82225 /* ModSample.h */, - 8A83B34AF69D16EC3FC02680 /* ModSampleCopy.h */, - 63C188DFCFDBEB8018FEFB14 /* ModSequence.cpp */, - AA1915CB16A9D6B51FA5B7CD /* ModSequence.h */, - 195FB3DD85CD085DCEB6C35C /* OPL.cpp */, - E0AF57C14C9366015596943D /* OPL.h */, - 521A6663BEA9274EC7A50866 /* OggStream.cpp */, - 59F2261CC5B6250C8E1C56D6 /* OggStream.h */, - 4002FE2CACBB68D7351B83B1 /* Paula.cpp */, - C775A39B33E4F81A7CCDB31A /* Paula.h */, - 8155EB0DED19EAFDB67F1AC8 /* Resampler.h */, - 129D1878FE190CBB27970CCF /* RowVisitor.cpp */, - 597D37F345CF0EE32EEE4BF3 /* RowVisitor.h */, - B2F24F229E44271287636422 /* S3MTools.cpp */, - 798297766569596E0EBABF8B /* S3MTools.h */, - A3EF8A9B0F608D14D87E079D /* SampleFormatBRR.cpp */, - 8CF15914786FAAAD61676845 /* SampleFormatFLAC.cpp */, - 08C5199174351C0A3D549692 /* SampleFormatMP3.cpp */, - 51283E4FBD9A806B062FB6EF /* SampleFormatMediaFoundation.cpp */, - A36716E08FE5667978DD2411 /* SampleFormatOpus.cpp */, - 914210D4FDB2124DC6D18CD5 /* SampleFormatSFZ.cpp */, - 2C53444118FCAB704192C7EF /* SampleFormatVorbis.cpp */, - 4C8CAEC9B8F1415041CAE328 /* SampleFormats.cpp */, - 4AFFD6F63651AEE61F70EBF6 /* SampleIO.cpp */, - 11894234FD6F042CA6C06A49 /* SampleIO.h */, - 7FA7C6CA6B8E88C214DFEEDF /* Snd_defs.h */, - 8ED5D7DDFA99D6CDC3FF0698 /* Snd_flt.cpp */, - 0889B141F46F73399DC0D956 /* Snd_fx.cpp */, - 4DE5ACEAB9A9ABDA820FDCA4 /* Sndfile.cpp */, - 146A3EBF8023A9690983C343 /* Sndfile.h */, - 1F9C7BC50B833DBDB4D3A3DA /* Sndmix.cpp */, - 3A2316F1A6E9720DEF440170 /* SoundFilePlayConfig.cpp */, - C13B7D272D77DDEA366C5A7A /* SoundFilePlayConfig.h */, - 847994AF706056A719B1BCC4 /* Tables.cpp */, - 4BE4B6B63720BA20A032D217 /* Tables.h */, - 0E2CE45C7AF0E24C43561317 /* Tagging.cpp */, - 0CC13DCB787AA87501DAC24F /* Tagging.h */, - ECAC07275871061721D736E1 /* TinyFFT.cpp */, - F3BDB4C45F771F6FE8D63949 /* TinyFFT.h */, - F788BDF4E3DA94E4CCF9D1F4 /* UMXTools.cpp */, - 7EC3B01D6AAA721513FBD832 /* UMXTools.h */, - F5C7AFC7612D434EEA05E526 /* UpgradeModule.cpp */, - 08381BBCF489F2ABDDA82FBC /* WAVTools.cpp */, - 4F7A05BD3B61C7B4E4B12DD2 /* WAVTools.h */, - 2FFD15809B177921E43989B5 /* WindowedFIR.cpp */, - 76F2488FE2810A7AEB7DEB91 /* WindowedFIR.h */, - 5EE81FA5CAAC1E9593124F5F /* XMTools.cpp */, - E5744324512EAECEDA8DC8A8 /* XMTools.h */, - 294D3010159F0700FEBD4410 /* load_j2b.cpp */, - 814AC2DA6DF3290A96894589 /* mod_specifications.cpp */, - 08E5A74DF462F8E6DD5AB67E /* mod_specifications.h */, - 08812CFDF4FD1F401D7B2054 /* modcommand.cpp */, - CFEBF58EBB3DCD7EA45C0A8F /* modcommand.h */, - F18BC5CD5DA6286FA6C83803 /* modsmp_ctrl.cpp */, - B8E8E1922478A37D2D748495 /* modsmp_ctrl.h */, - E266E428CEB7CF6AF71BBE2C /* opal.h */, - 4822C14EB4E6BF3E7D4CF008 /* pattern.cpp */, - 4F2C9921BBE503CC44451EA6 /* pattern.h */, - 4F9C3B3D3B1A8CD624124A6E /* patternContainer.cpp */, - D68280FDC29580566B7F5D43 /* patternContainer.h */, - C34F447D2FBE99FC78A754FC /* plugins */, - 7EBDDAED6AA49CE513F50203 /* tuning.cpp */, - C5E1C72CB11DCB961A30E38D /* tuning.h */, - 6E6ED48B5AEC242543E4E2BC /* tuningCollection.cpp */, - 64866C7650D8436639F78076 /* tuningbase.h */, - D7109B26C3239B7F6C0D786C /* tuningcollection.h */, + 0287C6D7EE1ABC7F57DF1534 /* AudioCriticalSection.cpp */, + A013DD508CBC4480B55260FF /* AudioCriticalSection.h */, + 4599282EB1FEBBB43AD75D8D /* AudioReadTarget.h */, + 642FCC0BD0F3CAFB9959FBC5 /* BitReader.h */, + A0C761210C57230C15530424 /* ChunkReader.h */, + F96BF7C66530F6B62E962681 /* Container.h */, + E766CB6FD379CBC87C63A8B5 /* ContainerMMCMP.cpp */, + 3106A8899D6B3B102644DDE8 /* ContainerPP20.cpp */, + 8B5FB83377C77E01E0329317 /* ContainerUMX.cpp */, + 465B516D32C3173B9B2E2C51 /* ContainerXPK.cpp */, + 71325B6DDDF6595DA65C8A27 /* Dlsbank.cpp */, + 06163BDD72CFA587FB2EC061 /* Dlsbank.h */, + 40EF5A3EACB3592E75198AF8 /* Fastmix.cpp */, + 861D6F9C726F468C5B8E839C /* FloatMixer.h */, + B7EEDD9E23547125AC2C13FE /* ITCompression.cpp */, + 7E7AC939EA942CDB33B73C6F /* ITCompression.h */, + 3105D8099DC9D6F9662F07C4 /* ITTools.cpp */, + F840982064FA02CBED591DA5 /* ITTools.h */, + 107FF285FC12E82D65D741E2 /* InstrumentExtensions.cpp */, + 7EF2A0396AD96231132AC94E /* IntMixer.h */, + AF543CF79BA613E784C550F7 /* Load_669.cpp */, + 5763666743B53D572CD47A67 /* Load_amf.cpp */, + 8619EADD726BC1CD5B8AFEDD /* Load_ams.cpp */, + 17D6E5F80328BDE8EC46FAF8 /* Load_c67.cpp */, + 1C5451F608A628E6F1C465F6 /* Load_dbm.cpp */, + E8D68A4C54664C375D622D4F /* Load_digi.cpp */, + 1B954E5B07E7254BF005635B /* Load_dmf.cpp */, + 0AC4B091F6158881DF34C591 /* Load_dsm.cpp */, + 855AF850F1E9B93BFAE59A53 /* Load_dsym.cpp */, + CF4C0C8FBB9EE37EA4BD208F /* Load_dtm.cpp */, + 65E5D7145137AF043A56EC14 /* Load_far.cpp */, + CC2A9D83B87C7473A19BB183 /* Load_fmt.cpp */, + 7F66EF026BB8C6F254D70303 /* Load_gdm.cpp */, + A5BC1BD8910EF3C77A2D30D8 /* Load_imf.cpp */, + 68A5B415D469B3059DCFE3CF /* Load_it.cpp */, + 3A48A8BA269A7FAA0FB9BCBA /* Load_itp.cpp */, + 434817612F9AEE5018B92B61 /* Load_mdl.cpp */, + FEE598F3EA3770E3D356ADF3 /* Load_med.cpp */, + 047FB27FF0D0896FD9EFC67F /* Load_mid.cpp */, + BBCA7333A71C4B23903B8833 /* Load_mo3.cpp */, + 8E37F1FD7A89C8ED63A805FE /* Load_mod.cpp */, + FA9292D8E6E469C8CF03A7D8 /* Load_mt2.cpp */, + 179663BA03E83AAAEC0678BA /* Load_mtm.cpp */, + 77F9E36EE31347102C3657A4 /* Load_mus_km.cpp */, + 7B85D09E67D7A78E50F6E49E /* Load_okt.cpp */, + B820E91FA472C00F8D91FD1F /* Load_plm.cpp */, + 18E520090437F8F8ED553509 /* Load_psm.cpp */, + DBC74BAEC719239EB03860AE /* Load_ptm.cpp */, + 7F7FB83F6BD18F2F54F0CC3F /* Load_s3m.cpp */, + DFFE6B07CB5043F7B46F8007 /* Load_sfx.cpp */, + 8438A37B708A7A6B59A9B77B /* Load_stm.cpp */, + 80CD02516C1FDA40553E1751 /* Load_stp.cpp */, + 64D9D395D0F33637191647CB /* Load_symmod.cpp */, + FB85FE35E7D7D525D0F61236 /* Load_uax.cpp */, + C4259BD3B07772C39996AFD3 /* Load_ult.cpp */, + 7F2A39BA6B7C10AA549B4DBA /* Load_wav.cpp */, + 0FEE0A0B7BB209FB44183AC5 /* Load_xm.cpp */, + 5C053551C8BE9FFB511EBAD5 /* Loaders.h */, + 6785B21F5302A6627C7FA676 /* MIDIEvents.cpp */, + 6E4C21795A9EF86843BD3579 /* MIDIEvents.h */, + 7BE6C98A6763BDCD90E0BDE1 /* MIDIMacros.cpp */, + 90E5528D7C372A7D6556678D /* MIDIMacros.h */, + D9ED4312457D05FD4E79E614 /* MPEGFrame.cpp */, + 20389CD88CFC9AC85562CB92 /* MPEGFrame.h */, + 8EF764C7FABB63B7C3219481 /* Message.cpp */, + 15F89A5281B105FD0A1120D7 /* Message.h */, + 4631BEB2329984809B049996 /* MixFuncTable.cpp */, + 0DFD03CEF979F71022F7F724 /* MixFuncTable.h */, + B2BCAA171E2B00976714BB96 /* Mixer.h */, + E517CDE1D17F93AF3AEBA7C5 /* MixerInterface.h */, + BE848B1DAA017F60D37E7F74 /* MixerLoops.cpp */, + 1CFF639B08513B8BF16F789B /* MixerLoops.h */, + 3DAAAE58A90F42DF32E8E3B7 /* MixerSettings.cpp */, + 849C09A3F0B66C4439D97CD8 /* MixerSettings.h */, + 045F6388F0DB56CB195957DF /* ModChannel.cpp */, + CB1AA5B1B76C7CA1A08BB9B1 /* ModChannel.h */, + FF1AA70A6B803A91F458DC69 /* ModInstrument.cpp */, + C6F44A3F320FAEE07B31BE74 /* ModInstrument.h */, + 2CE4D72698739911A16F7A29 /* ModSample.cpp */, + B37D08211F420711E8A737DB /* ModSample.h */, + 90A75BB3FCC1BE5445E4CEE8 /* ModSampleCopy.h */, + 20D734048CF197A5D513A839 /* ModSequence.cpp */, + 279C5659932B18449C27F95B /* ModSequence.h */, + D60758F44276AD738B5F6873 /* OPL.cpp */, + 5D055134C9E85F74D2EB8DB0 /* OPL.h */, + D88489B544144BA04D102CB8 /* OggStream.cpp */, + 96B13BD202763AC2CBDB6A8C /* OggStream.h */, + 3DCE6F7FA987DA2932E7F403 /* Paula.cpp */, + 841E48B2F08C9D3139765831 /* Paula.h */, + BE1400C42AD9FEB3F33E2F7E /* Resampler.h */, + 5858A90E44D59C516D529D65 /* RowVisitor.cpp */, + 3624E46B2276BB5B0B95F86B /* RowVisitor.h */, + 8F99FC9A7BEBD38A640A119B /* S3MTools.cpp */, + 16CE421702B5040FAB056B2C /* S3MTools.h */, + E09B95BF4C0C9838152B12C1 /* SampleFormatBRR.cpp */, + 5289B72D3E0708C727FFC55E /* SampleFormatFLAC.cpp */, + 457124B5B1E1262E7A00A1B6 /* SampleFormatMP3.cpp */, + 0E1850967A8A92B2C31EC836 /* SampleFormatMediaFoundation.cpp */, + 809B76856C19C71E551185B6 /* SampleFormatOpus.cpp */, + CEEE1AF83A5F1D71037E97F9 /* SampleFormatSFZ.cpp */, + 72F466285E9DCE578733EAD6 /* SampleFormatVorbis.cpp */, + 4905B7C9B56A4A503E43EC28 /* SampleFormats.cpp */, + 27A6836F13F85A5FFC16986F /* SampleIO.cpp */, + AED4EDD49ABBAFCC430C16EA /* SampleIO.h */, + 1CF3716B08DA3363B12A9A80 /* Snd_defs.h */, + 7D71C386E935C276B29BF240 /* Snd_flt.cpp */, + 6E26634B5A0D2543035E8B60 /* Snd_fx.cpp */, + 732F922ADFF3901AA859C1E4 /* Sndfile.cpp */, + BAF2DE1426AC49BFAF0B6499 /* Sndfile.h */, + 85392DCF7120EFC61A7155E4 /* Sndmix.cpp */, + A91DFCF615E458135E3FE775 /* SoundFilePlayConfig.cpp */, + 3EEBE378AA26443CB31BC1CB /* SoundFilePlayConfig.h */, + 21C53F500DAC0148B6FC6765 /* Tables.cpp */, + A8A4F0A194E0F30BFDF20B03 /* Tables.h */, + 4BEBF812B7AFF702801528CD /* Tagging.cpp */, + 92D834D0FE919F7A87F1B954 /* Tagging.h */, + 296C1CDD95301BCD5E964B97 /* TinyFFT.cpp */, + F08926175C4391C1E5A2AB9B /* TinyFFT.h */, + D42F6A6DC081415DA9A07E6D /* UMXTools.cpp */, + 1B0F5CBE07F61DB6B04684D3 /* UMXTools.h */, + 7B05F1FAE76A84817043265A /* UpgradeModule.cpp */, + E5DEC734D1309F24BA4FDC34 /* WAVTools.cpp */, + ECC5B05DD8AC725581FDD872 /* WAVTools.h */, + EC12C2A4582D2546A14F35DA /* WindowedFIR.cpp */, + F3748A1D5F044C0868002D20 /* WindowedFIR.h */, + 64F93AC4D0BD39B499236A7E /* XMTools.cpp */, + E240B5764EFA1F21D7593AFB /* XMTools.h */, + 06F4DC88F245B478DB64F188 /* load_j2b.cpp */, + 9EE9FE588A926688B3288207 /* mod_specifications.cpp */, + E51808F3D196588CBA8E1624 /* mod_specifications.h */, + 4E3CBD933AB9B0D66336B1EA /* modcommand.cpp */, + AC92A20798E479F78103B707 /* modcommand.h */, + AEA171F21ABCD49363DEE427 /* modsmp_ctrl.cpp */, + 356B2321A1FAE40BAAF6C523 /* modsmp_ctrl.h */, + FF6B08FBEBBCF33C1421E2FE /* opal.h */, + 4E33DC6DBAF7DA5D835D0B28 /* pattern.cpp */, + 4CF80A74B8B1751E411190F8 /* pattern.h */, + 2CD09BE2184EEC7B0146AA13 /* patternContainer.cpp */, + 731B98FE5F2E985708187544 /* patternContainer.h */, + 80F8E893EC663E133550F912 /* plugins */, + C4C5B491B0AC768959FDDCA6 /* tuning.cpp */, + 22A201180EDE048277F01C79 /* tuning.h */, + 4BA23431372085CA20184362 /* tuningCollection.cpp */, + 412D19EF2D7FF0DE169E2DEF /* tuningbase.h */, + 74A9B22760BCB28009A68F6D /* tuningcollection.h */, ); name = "soundlib"; path = "../../soundlib"; sourceTree = ""; }; - C34F447D2FBE99FC78A754FC /* plugins */ = { + 80F8E893EC663E133550F912 /* plugins */ = { isa = PBXGroup; children = ( - F527128B6144047C2A1C71E9 /* DigiBoosterEcho.cpp */, - BC2659D128380178B18993B7 /* DigiBoosterEcho.h */, - 2F0089A19B3BE964A43066F4 /* LFOPlugin.cpp */, - F65E970E62CF99872BEE1310 /* LFOPlugin.h */, - 35100F5EA175A2E42A4E44BD /* OpCodes.h */, - 85CB2752F1DCCFF87A2E6238 /* PlugInterface.cpp */, - CC6D25B5383482D1818F1034 /* PlugInterface.h */, - CAB0009F36C2A845BF133B85 /* PluginManager.cpp */, - D13D8A553D04E771865F75D4 /* PluginManager.h */, - A066DC7B0C78842295C91662 /* PluginMixBuffer.h */, - E96DF64E5534536B9E8FE1CD /* PluginStructs.h */, - 3702474223ABAE714C41CAF0 /* SymMODEcho.cpp */, - 3E370FFE2AB55F9713AD1D2F /* SymMODEcho.h */, - 32CF28BB9E9327AB67F95775 /* dmo */, + FB844A6967A13C5A3079A9C7 /* DigiBoosterEcho.cpp */, + B94C55CD255EFD73AEAF8FB3 /* DigiBoosterEcho.h */, + ACAFEFF218EB4FB621E0CC45 /* LFOPlugin.cpp */, + 330BA2329F7BA4AB689A1E34 /* LFOPlugin.h */, + 3289175E9EEEAAE427C74CBD /* OpCodes.h */, + 0B2F79D67740217D0092B3BC /* PlugInterface.cpp */, + 89F0F5FAF5B652173E12E179 /* PlugInterface.h */, + C7D6FC9A33E8A441BC393781 /* PluginManager.cpp */, + 8EC05A9BFA86B7B743E2451A /* PluginManager.h */, + 9D8CD877099E801E92EF125E /* PluginMixBuffer.h */, + EF376D1A5BFEC936A4595899 /* PluginStructs.h */, + 54A183C0404AEBEF69E0066F /* SymMODEcho.cpp */, + 1B6B6FA307E9BF3CF0E07DD4 /* SymMODEcho.h */, + 6F8E3D71DB523C61A4B86C2B /* dmo */, ); name = "plugins"; path = "plugins"; sourceTree = ""; }; - 32CF28BB9E9327AB67F95775 /* dmo */ = { + 6F8E3D71DB523C61A4B86C2B /* dmo */ = { isa = PBXGroup; children = ( - A748CBA393F132D3BC874E52 /* Chorus.cpp */, - AE21EF679A9F3F018397FD98 /* Chorus.h */, - 324CF1ED1E8B9B69C70D789B /* Compressor.cpp */, - 79F7C0FD658BB6A5CE4F105A /* Compressor.h */, - 38FD1854A40EC1FA2D60533A /* DMOPlugin.cpp */, - BF96A8892B5D05A674B89308 /* DMOPlugin.h */, - 9E6CA3568A0099FEF3C4F2B2 /* DMOUtils.cpp */, - 3CE2CB18288B334851214FC7 /* DMOUtils.h */, - B7E54627A324F1A24CA7CDD4 /* Distortion.cpp */, - BE6B682FAAFF5DD713C4B78B /* Distortion.h */, - 4B5F02E737DD528020D51018 /* Echo.cpp */, - D256821FBE69827867535F65 /* Echo.h */, - E6C3D4E8528A31059BE5BF67 /* Flanger.cpp */, - 6DC18303D9FCE3C6E2F16056 /* Flanger.h */, - DD90FE0BC939663BF2CF81BA /* Gargle.cpp */, - 64E42623506277BC395A3554 /* Gargle.h */, - F3F92A725F161D6328EE89D0 /* I3DL2Reverb.cpp */, - B12324271D35CCCDA6865E0D /* I3DL2Reverb.h */, - D13FDA133D0637308661C592 /* ParamEq.cpp */, - 984693AC0482F36F0D7770FF /* ParamEq.h */, - DAAC944646C986370FA1F3A4 /* WavesReverb.cpp */, - 612E3B4CCD3FE3F256917532 /* WavesReverb.h */, + C4E70722B0906F51D9268BD0 /* Chorus.cpp */, + 8B554F0D77D39FA660CB5D3E /* Chorus.h */, + 41E409EF2D23B46AD6A5909C /* Compressor.cpp */, + 5F0FF7854BA3EC2DB46746E2 /* Compressor.h */, + DE1112E34A23BA89D3744CC9 /* DMOPlugin.cpp */, + E549E809511045269A6BD388 /* DMOPlugin.h */, + 8484D9DE7018CF86D9DC283B /* DMOUtils.cpp */, + CBCA9485B773FCB4E0091834 /* DMOUtils.h */, + 54CBC7A2400A721EE98C4E50 /* Distortion.cpp */, + 1B46492F07DA3ED7709E988B /* Distortion.h */, + 2893628C1411B325FD0871BD /* Echo.cpp */, + 6FEF99205B029A7904EC7666 /* Echo.h */, + EC8D4BB45854A8D0A1AF3633 /* Flanger.cpp */, + EA70EA5456AC4A185FA1C7A7 /* Flanger.h */, + FA2F3B8AE6D8A2B90F6FBE38 /* Gargle.cpp */, + 411887C82D96D761168E95F9 /* Gargle.h */, + 3093C85D9CAFBA4E658727BC /* I3DL2Reverb.cpp */, + 378775ABA3981D522CEAAF91 /* I3DL2Reverb.h */, + 8EC2AA59FA88077643E495D8 /* ParamEq.cpp */, + 15F6F9FD81315AC18A26D750 /* ParamEq.h */, + 17463232836224234C3A9190 /* WavesReverb.cpp */, + 5E543748CA65DFEE53B7712E /* WavesReverb.h */, ); name = "dmo"; path = "dmo"; sourceTree = ""; }; - 9E6A03080A2D379253DDC51E /* Products */ = { + 989CAF37842B39012D4A4DFC /* src */ = { isa = PBXGroup; children = ( + 10E5910AFC09E18A2555C61A /* mpt */, + ); + name = "src"; + path = "../../src"; + sourceTree = ""; + }; + 10E5910AFC09E18A2555C61A /* mpt */ = { + isa = PBXGroup; + children = ( + 5BFCDDCCC714C5F690C15490 /* base */, + 4B80E5B8B763F4F8C0662235 /* binary */, + 65E1E6D65107B13D3A4D3609 /* check */, + 9D846E77893F5E2332F7D66D /* crc */, + 03BDA1AB6FA0B0EB78A3DE27 /* crypto */, + 7C85C28AE868D1CAF16BFF06 /* detect */, + B77A0A92235E19D22C61470E /* endian */, + BE421372AA29D569537A3B87 /* environment */, + F6CC7E61625C404C6B582164 /* exception_text */, + 6FADB58BDB90C4CBE493F207 /* format */, + 984B3D5E04642488CD10B421 /* json */, + 14B29AE500D8644CE91DEA17 /* mutex */, + 5222BBF7BE05CA37C708F873 /* osinfo */, + E24F379FCEA10E8FB7C04B9F /* out_of_memory */, + 5CA26B4648C835AD310EBB78 /* parse */, + 88CC0842F4AF1782FDB245BE /* random */, + 5EB02841CA933781D39665BD /* string */, + C178144E2D08D6383604B750 /* string_convert */, + 57C950EEC38D4FDE8CF37FA8 /* system_error */, + 43CBD0C3AFE3B7ED78904787 /* test */, + 9F3AF5000B53DC2AD4FF6BC4 /* uuid */, + AA6941A916F902941FF5E3AB /* uuid_namespace */, + ); + name = "mpt"; + path = "mpt"; + sourceTree = ""; + }; + 5BFCDDCCC714C5F690C15490 /* base */ = { + isa = PBXGroup; + children = ( + C8D83AE1343ECE67BD167040 /* algorithm.hpp */, + AE2D12DB1ABDD3C523B9B4DD /* alloc.hpp */, + 2C83CD5C1817C30481DB1CB9 /* arithmetic_shift.hpp */, + C6C8B4D9325876C43B5457DC /* array.hpp */, + 5F0AC635CBCEC4259434F5EF /* bit.hpp */, + A410AA6490B91194B94F2D13 /* check_platform.hpp */, + B1AEFC671DCBEE58E6A25BC6 /* compiletime_warning.hpp */, + 1FB774638B7DD17FD4D85FE2 /* constexpr_throw.hpp */, + A1D4208A8D5114CDB6CE14E1 /* detect.hpp */, + F4F56CD960BCC9F5A9175858 /* detect_compiler.hpp */, + D5B53E0F412641880A45BB10 /* detect_libc.hpp */, + C7BE1EAB33FA7E6E3CEFFBFD /* detect_libcxx.hpp */, + 417B383AADE0CBC036B96D99 /* detect_os.hpp */, + 60D6116ACC11722DD506EFBC /* detect_quirks.hpp */, + 207E3D6D8CB99D3095AE1AC0 /* floatingpoint.hpp */, + 521EADD8BE38107A075B200E /* integer.hpp */, + EB8F06BED70CFA00008AFA14 /* macros.hpp */, + B230D6779E82AD6787A1EA77 /* math.hpp */, + E3C619D9CF430D1CF8C00D30 /* memory.hpp */, + 90676081FCCCF30785A595E0 /* namespace.hpp */, + D890886444ABEB058DCDFB99 /* numeric.hpp */, + 88D7487BF4F1AB1C3D14BCB0 /* pointer.hpp */, + 107C4246FCF992DFE5F15077 /* preprocessor.hpp */, + 7E5D27C1EA988784F38D0414 /* saturate_cast.hpp */, + 74338A1960DCF14889720DC8 /* saturate_round.hpp */, + 4DE0AE57395DA29A62DAA2AE /* secure.hpp */, + 21BC96400D508CE87614E69C /* semantic_version.hpp */, + 532BE545BFF14162084DD0C4 /* source_location.hpp */, + 9ECD7E188A1F5608733E9318 /* span.hpp */, + F901818F65BBEB39EE1A0614 /* tests */, + 74C443CAE0DEA66B2901B7FF /* utility.hpp */, + 48C43AE9B4DE9D8AFD00AE1E /* version.hpp */, + A0160B270CDD67435538F6A5 /* wrapping_divide.hpp */, + ); + name = "base"; + path = "base"; + sourceTree = ""; + }; + F901818F65BBEB39EE1A0614 /* tests */ = { + isa = PBXGroup; + children = ( + B220E66A1E8A7BCDA7CD2978 /* tests_base_arithmetic_shift.hpp */, + 6C1695ED58C0CAFC4191D217 /* tests_base_bit.hpp */, + 59102DB7C5F717ADCEE51929 /* tests_base_math.hpp */, + 04CD2A2AF0CDBEA419962B29 /* tests_base_saturate_cast.hpp */, + 23EA70F68F0885C3D8D58AD5 /* tests_base_saturate_round.hpp */, + 8802D44F74EE6BBFDD642B12 /* tests_base_wrapping_divide.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 4B80E5B8B763F4F8C0662235 /* binary */ = { + isa = PBXGroup; + children = ( + 4D7EC34B39E68919A2519E2F /* base64.hpp */, + E23113E34EA2155C17C18FE4 /* base64url.hpp */, + 91E6DDC4FD759FAF067280C7 /* hex.hpp */, + 0BF76C6077BB6B5040219C1A /* tests */, + ); + name = "binary"; + path = "binary"; + sourceTree = ""; + }; + 0BF76C6077BB6B5040219C1A /* tests */ = { + isa = PBXGroup; + children = ( + 686844B754127AC63DE381E1 /* tests_binary.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 65E1E6D65107B13D3A4D3609 /* check */ = { + isa = PBXGroup; + children = ( + FC98C9E068288BCB71246CE3 /* libc.hpp */, + 1AA8475B06FA1E4BEF185C5B /* mfc.hpp */, + 11B1C905FD1890D36684A4E9 /* windows.hpp */, + ); + name = "check"; + path = "check"; + sourceTree = ""; + }; + 9D846E77893F5E2332F7D66D /* crc */ = { + isa = PBXGroup; + children = ( + 3BBCE0F827A3A2F0D0F3080E /* crc.hpp */, + 02729B66EEAD9ED057C0B6C7 /* tests */, + ); + name = "crc"; + path = "crc"; + sourceTree = ""; + }; + 02729B66EEAD9ED057C0B6C7 /* tests */ = { + isa = PBXGroup; + children = ( + C9CDD777B5763FA7DE0C5B26 /* tests_crc.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 03BDA1AB6FA0B0EB78A3DE27 /* crypto */ = { + isa = PBXGroup; + children = ( + 383FD9F9A4AFDB726DCE55FB /* exception.hpp */, + EF49E2F2DBC6D5350444D649 /* hash.hpp */, + 7922327FE5B1F369EEADD481 /* jwk.hpp */, + 8C2F48D3F8F346C3C159778D /* tests */, + ); + name = "crypto"; + path = "crypto"; + sourceTree = ""; + }; + 8C2F48D3F8F346C3C159778D /* tests */ = { + isa = PBXGroup; + children = ( + FC9CBB2BE846F13AD117F955 /* tests_crypto.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 7C85C28AE868D1CAF16BFF06 /* detect */ = { + isa = PBXGroup; + children = ( + 38B85F9EA4472189AD4302A1 /* mfc.hpp */, + 38BA5C18A480B934EDDB4797 /* nlohmann_json.hpp */, + ); + name = "detect"; + path = "detect"; + sourceTree = ""; + }; + B77A0A92235E19D22C61470E /* endian */ = { + isa = PBXGroup; + children = ( + 3BF71195A7BD6EB1F018FD13 /* floatingpoint.hpp */, + 249351A190F8E42719D18600 /* integer.hpp */, + B524A4BF21E9A2AFEA4ED379 /* tests */, + ); + name = "endian"; + path = "endian"; + sourceTree = ""; + }; + B524A4BF21E9A2AFEA4ED379 /* tests */ = { + isa = PBXGroup; + children = ( + 99950A86852C4D3B2EE1C33B /* tests_endian_floatingpoint.hpp */, + 4B9CFB3337728231201C9D84 /* tests_endian_integer.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + BE421372AA29D569537A3B87 /* environment */ = { + isa = PBXGroup; + children = ( + 99C6469B8505F1162E88CD48 /* environment.hpp */, + ); + name = "environment"; + path = "environment"; + sourceTree = ""; + }; + F6CC7E61625C404C6B582164 /* exception_text */ = { + isa = PBXGroup; + children = ( + EF07816EDBC7111344E5F91D /* exception_text.hpp */, + ); + name = "exception_text"; + path = "exception_text"; + sourceTree = ""; + }; + 6FADB58BDB90C4CBE493F207 /* format */ = { + isa = PBXGroup; + children = ( + 1750259C83C267B8CC569D3C /* default_floatingpoint.hpp */, + 0F5372197B6F640A4447D177 /* default_formatter.hpp */, + CB369E23374846CAC099D809 /* default_integer.hpp */, + 2D5B373F19EF2CE782B3869B /* default_string.hpp */, + A7E993BB134F27429C27C91A /* helpers.hpp */, + 1B96D63C87FB69C310D40B9C /* message.hpp */, + C1FC9ACBAD9090731655EA27 /* message_macros.hpp */, + 84373932709FFFFFD90A1416 /* simple.hpp */, + 7A680999663D514C8FEC9048 /* simple_floatingpoint.hpp */, + 6C873621581B2CC9C1DF857D /* simple_integer.hpp */, + 0BA1026A77DC622D80D1DFBC /* simple_spec.hpp */, + 768BAC64E24FAB54ABB5DB1E /* tests */, + ); + name = "format"; + path = "format"; + sourceTree = ""; + }; + 768BAC64E24FAB54ABB5DB1E /* tests */ = { + isa = PBXGroup; + children = ( + 1B77EE03074D7501F0F68F54 /* tests_format_message.hpp */, + 421E02E0AEE6CF637777D875 /* tests_format_simple.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 984B3D5E04642488CD10B421 /* json */ = { + isa = PBXGroup; + children = ( + F8F7E0CBE449B8BBCD68F5CB /* json.hpp */, + ); + name = "json"; + path = "json"; + sourceTree = ""; + }; + 14B29AE500D8644CE91DEA17 /* mutex */ = { + isa = PBXGroup; + children = ( + CD7F285BB9FC1B9EE2791CB2 /* mutex.hpp */, + ); + name = "mutex"; + path = "mutex"; + sourceTree = ""; + }; + 5222BBF7BE05CA37C708F873 /* osinfo */ = { + isa = PBXGroup; + children = ( + 8845F536F4569DDD7DA82F1D /* windows_version.hpp */, + ); + name = "osinfo"; + path = "osinfo"; + sourceTree = ""; + }; + E24F379FCEA10E8FB7C04B9F /* out_of_memory */ = { + isa = PBXGroup; + children = ( + 4C10F0FB38E537AF619477AB /* out_of_memory.hpp */, + ); + name = "out_of_memory"; + path = "out_of_memory"; + sourceTree = ""; + }; + 5CA26B4648C835AD310EBB78 /* parse */ = { + isa = PBXGroup; + children = ( + 3DEE388F296B2CD252E82CE6 /* parse.hpp */, + C18F67ECAD7629E456C78F01 /* tests */, + ); + name = "parse"; + path = "parse"; + sourceTree = ""; + }; + C18F67ECAD7629E456C78F01 /* tests */ = { + isa = PBXGroup; + children = ( + F44EB7FAE08D617689103EA8 /* tests_parse.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 88CC0842F4AF1782FDB245BE /* random */ = { + isa = PBXGroup; + children = ( + 4D400B14B95A6EB5027D7E49 /* crand.hpp */, + 34206415A0310CBC29839EFB /* default_engines.hpp */, + B902D65EA56A9C2C0ED6B042 /* device.hpp */, + 61A63F304D0E06FEB6791A14 /* engine.hpp */, + 98CF021D844D53B66D45114E /* engine_lcg.hpp */, + 07C31E48F32AE5155C96F92B /* random.hpp */, + C9EE001BB56BF45DDEE8F471 /* seed.hpp */, + 4722BFA7B3E6BD977C4CEE61 /* tests */, + ); + name = "random"; + path = "random"; + sourceTree = ""; + }; + 4722BFA7B3E6BD977C4CEE61 /* tests */ = { + isa = PBXGroup; + children = ( + 009F1149EC484758D5194F73 /* tests_random.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 5EB02841CA933781D39665BD /* string */ = { + isa = PBXGroup; + children = ( + BEE08A50AA48511E13B46534 /* buffer.hpp */, + DACD403546923F250FF86FEF /* tests */, + 57D58DC2C3EFF0630C1201F8 /* types.hpp */, + D8CCA06E443234F5CD0AD6CD /* utility.hpp */, + ); + name = "string"; + path = "string"; + sourceTree = ""; + }; + DACD403546923F250FF86FEF /* tests */ = { + isa = PBXGroup; + children = ( + 829CEFD9EE64BD5DB7F5C56F /* tests_string_buffer.hpp */, + FED8A4F7EAAE2BF5D3584648 /* tests_string_utility.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + C178144E2D08D6383604B750 /* string_convert */ = { + isa = PBXGroup; + children = ( + 7F2DA6AFEB3E4E567490E095 /* convert.hpp */, + C5E1A3C5B175996D1A3AF321 /* macros.hpp */, + 3FDE4F5DAB4E52D6746DCC5E /* tests */, + ); + name = "string_convert"; + path = "string_convert"; + sourceTree = ""; + }; + 3FDE4F5DAB4E52D6746DCC5E /* tests */ = { + isa = PBXGroup; + children = ( + 6E4685C95A48C9D943CBBFD2 /* tests_string_convert.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 57C950EEC38D4FDE8CF37FA8 /* system_error */ = { + isa = PBXGroup; + children = ( + 0BF64FA0F79F85AFE0708DCA /* system_error.hpp */, + ); + name = "system_error"; + path = "system_error"; + sourceTree = ""; + }; + 43CBD0C3AFE3B7ED78904787 /* test */ = { + isa = PBXGroup; + children = ( + 89F40CFB7546E4EA5E6521FB /* test.hpp */, + 2FEA2ACD9B5A2D466479A7CE /* test_macros.hpp */, + ); + name = "test"; + path = "test"; + sourceTree = ""; + }; + 9F3AF5000B53DC2AD4FF6BC4 /* uuid */ = { + isa = PBXGroup; + children = ( + CE121DFCBA64F4EBA38331FC /* guid.hpp */, + E411A56250CB0F0DD92A2AE7 /* tests */, + F854942DE4A66B1DCDC5A82D /* uuid.hpp */, + ); + name = "uuid"; + path = "uuid"; + sourceTree = ""; + }; + E411A56250CB0F0DD92A2AE7 /* tests */ = { + isa = PBXGroup; + children = ( + D392487ABF263E2228EB97D6 /* tests_uuid.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + AA6941A916F902941FF5E3AB /* uuid_namespace */ = { + isa = PBXGroup; + children = ( + 2D053361997535DA6294AF62 /* tests */, + 9624282C82E4B8D0EB01A1DB /* uuid_namespace.hpp */, + ); + name = "uuid_namespace"; + path = "uuid_namespace"; + sourceTree = ""; + }; + 2D053361997535DA6294AF62 /* tests */ = { + isa = PBXGroup; + children = ( + 08A98847F4AACC57DD2DC350 /* tests_uuid_namespace.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + EADBDCA4569E102F9F4E9FBB /* Products */ = { + isa = PBXGroup; + children = ( C1F3343CADAE24E856669D32 /* liblibopenmpt.dylib */, ); name = "Products"; sourceTree = ""; }; - B533D44521F607D06AA6965C /* Projects */ = { + B8088B4824CBBED26D7B4D5F /* Projects */ = { isa = PBXGroup; children = ( C6AF7A2032CC6C11FBA3D97E /* mpg123.xcodeproj */, @@ -1009,11 +1621,11 @@ /* Begin PBXNativeTarget section */ 87EFAFF2F3FCDDD87CE3D9C3 /* libopenmpt */ = { isa = PBXNativeTarget; - buildConfigurationList = 388822CDA49D90232D5A6A84 /* Build configuration list for PBXNativeTarget "libopenmpt" */; + buildConfigurationList = FB1BD283673140DAF0ED193B /* Build configuration list for PBXNativeTarget "libopenmpt" */; buildPhases = ( - 9A677A31067DE8878F39C2E8 /* Resources */, - 120DD2957E2240EC07DF194D /* Sources */, - 3C7629FAA88B9750314871B1 /* Frameworks */, + 5DFB29E8C910983E52CD719F /* Resources */, + D5A0814C41B6EFA2CA72C903 /* Sources */, + FF09D9B06B1F4707F4DB2068 /* Frameworks */, ); buildRules = ( ); @@ -1083,7 +1695,7 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 9A677A31067DE8878F39C2E8 /* Resources */ = { + 5DFB29E8C910983E52CD719F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1093,146 +1705,146 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 120DD2957E2240EC07DF194D /* Sources */ = { + D5A0814C41B6EFA2CA72C903 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 97A51AD6834E8205ACE49D84 /* ComponentManager.cpp in Sources */, - 6229FC8D4E91C25BB7FCD671 /* FileReader.cpp in Sources */, - 354D6662A1DC274DAAD80865 /* Logging.cpp in Sources */, - B559BADCA1D6AD1FCA53AE33 /* Profiler.cpp in Sources */, - 96E97B500204DFF14B26EF85 /* misc_util.cpp in Sources */, - 18A728A284C18B43CDE39BD7 /* mptFileIO.cpp in Sources */, - 1C8E80F988527FE951B8AFB3 /* mptIO.cpp in Sources */, - B475924FA0DD581D09496D33 /* mptLibrary.cpp in Sources */, - 89ECFABBF5B0F9ABBE162A76 /* mptOS.cpp in Sources */, - CA192FA4368A311DFFA8ABA5 /* mptPathString.cpp in Sources */, - 42BF1D47AED980E8F7FB907C /* mptRandom.cpp in Sources */, - 9E08049F0A236740534577D4 /* mptString.cpp in Sources */, - 3311F54C9F4C5510A841D29F /* mptStringBuffer.cpp in Sources */, - 462288DCB25DE89FBB52652F /* mptStringFormat.cpp in Sources */, - BC43C5C9A8C1156391B9D3FA /* mptStringParse.cpp in Sources */, - 7DBE1EBF693B120292B81216 /* mptTime.cpp in Sources */, - 0918AA01F5949D441E129E58 /* mptUUID.cpp in Sources */, - AAE911569628BCD13FAB9803 /* serialization_utils.cpp in Sources */, - 48A5602B3422546E5D9F5482 /* version.cpp in Sources */, - F136D2675DFD2E84A658BDE6 /* libopenmpt_c.cpp in Sources */, - DCF2BB5E48046405D155F644 /* libopenmpt_cxx.cpp in Sources */, - F160FBD5DD35438906E58285 /* libopenmpt_ext_impl.cpp in Sources */, - 3C74EB7D28B395F9D135722B /* libopenmpt_impl.cpp in Sources */, - B7DD7231A32F4A218C4E8731 /* AGC.cpp in Sources */, - 17DB0EE1032DE6D0EC4B23E1 /* DSP.cpp in Sources */, - 215326728D172562567D552C /* EQ.cpp in Sources */, - 55866632C1A0C9D30AC3D967 /* Reverb.cpp in Sources */, - 8DAD47C4F99432BA02833436 /* AudioCriticalSection.cpp in Sources */, - 3243F49B9E0951B8E764DF1A /* ContainerMMCMP.cpp in Sources */, - 5CC56D85486ED5B47104F133 /* ContainerPP20.cpp in Sources */, - 96B71BAA02F37B6D0BE8F8FC /* ContainerUMX.cpp in Sources */, - 285F14E2949A74A59D8FF134 /* ContainerXPK.cpp in Sources */, - F33927D4DFA1EDA1480D02B8 /* Dlsbank.cpp in Sources */, - 14ECEE7F0054B54D69BFC963 /* Fastmix.cpp in Sources */, - C236E8A5AEDF4FD5D7756B54 /* ITCompression.cpp in Sources */, - A5600C3091C8D2FDFA33E713 /* ITTools.cpp in Sources */, - 64B8B1A9D09F9C9FD98D9E1B /* InstrumentExtensions.cpp in Sources */, - DA0ECFD34674625ACF4C0433 /* Load_669.cpp in Sources */, - 0B4B8D5177B020D80089C2B0 /* Load_amf.cpp in Sources */, - 9A36754A069C08D18F74AAA9 /* Load_ams.cpp in Sources */, - CB75625637DBF5DCC0B397B5 /* Load_c67.cpp in Sources */, - 67BA1D31D31FB1B75CF85290 /* Load_dbm.cpp in Sources */, - 13A07838FFB27891A89C557E /* Load_digi.cpp in Sources */, - 4F376F0CBB9C02934475A46B /* Load_dmf.cpp in Sources */, - 9E13DF0A0A7972919351146A /* Load_dsm.cpp in Sources */, - 79435BA565565BFE0E4038EB /* Load_dsym.cpp in Sources */, - FA1AFF6E668092F5EF5834CE /* Load_dtm.cpp in Sources */, - 5081AF39BCE642C045BFE498 /* Load_far.cpp in Sources */, - A00304C30C69974995413922 /* Load_fmt.cpp in Sources */, - 33877EE79FEC116E28C5B346 /* Load_gdm.cpp in Sources */, - 19A574CC850A08530EE3A92B /* Load_imf.cpp in Sources */, - D3E39AFBBF4B61C928B775DF /* Load_it.cpp in Sources */, - 45F1E78BB1567B123A2F1DEB /* Load_itp.cpp in Sources */, - 7723EED7E388815E6C612337 /* Load_mdl.cpp in Sources */, - 128E2E117EF3C19707CC6370 /* Load_med.cpp in Sources */, - D8BA2E084420C28ECDF86367 /* Load_mid.cpp in Sources */, - 662C1EA7D291B12D5B6A5306 /* Load_mo3.cpp in Sources */, - 19950F6185FAA2E70ED344C0 /* Load_mod.cpp in Sources */, - 8EB8E77CFA1D7B0383F61CDC /* Load_mt2.cpp in Sources */, - CB35786C379B0BF3C073ADCB /* Load_mtm.cpp in Sources */, - AB62E49197E0342B80D8F2C2 /* Load_mus_km.cpp in Sources */, - 269F5D2B9204F1B11BDD928A /* Load_okt.cpp in Sources */, - 83C85939EF2DEDBF78068F98 /* Load_plm.cpp in Sources */, - 6C0D34C3D872C749614B6922 /* Load_psm.cpp in Sources */, - 0F225A277B87EDAD04608F86 /* Load_ptm.cpp in Sources */, - 3340DFDA9FA57261287E143A /* Load_s3m.cpp in Sources */, - 0A97505676FCE3DCFFD485B5 /* Load_sfx.cpp in Sources */, - CF9FD67B3B056A02C4DD0BDB /* Load_stm.cpp in Sources */, - D4761F3F40DCB2C5C9B4549E /* Load_stp.cpp in Sources */, - B83E6EBDA4BCBE568DB47CEE /* Load_symmod.cpp in Sources */, - 2FB418CD9B19AC5324F24D2C /* Load_uax.cpp in Sources */, - 667FC337D2E456BE5BBDF896 /* Load_ult.cpp in Sources */, - 01B1F8F96D168C80F6EE2D59 /* Load_wav.cpp in Sources */, - BABFF0BFA627B78D0F93CBA3 /* Load_xm.cpp in Sources */, - 320CD7C19E7CD93A679B53C3 /* MIDIEvents.cpp in Sources */, - FD2EDE41699FE0BA32BE5A43 /* MIDIMacros.cpp in Sources */, - 4D0BCC97391ECCF0E207A9DD /* MPEGFrame.cpp in Sources */, - B97DF2DAA5E5B8A80E51CDBE /* Message.cpp in Sources */, - 5AD886F7C613E7BACF08644A /* MixFuncTable.cpp in Sources */, - 0993995475039CCD3E221656 /* MixerLoops.cpp in Sources */, - 3118DFD71DC1460746576286 /* MixerSettings.cpp in Sources */, - 0FC9B2457B39B5BE44582F47 /* ModChannel.cpp in Sources */, - 3352268B1FFB8DBA4891A939 /* ModInstrument.cpp in Sources */, - 80EDE5166C00E66F15EAC25C /* ModSample.cpp in Sources */, - F4317F07E0AFCFA0C9A78D38 /* ModSequence.cpp in Sources */, - 6A603FED56B216DD3FD153ED /* OPL.cpp in Sources */, - 038481ACEF96810598805EF2 /* OggStream.cpp in Sources */, - 31D801561D55F59846D2F5AC /* Paula.cpp in Sources */, - E3B68D174F27909018460A19 /* RowVisitor.cpp in Sources */, - 432416ACAF89A93238624B0B /* S3MTools.cpp in Sources */, - 4B303DDB37C43283A0888C37 /* SampleFormatBRR.cpp in Sources */, - 5D8C01CEC99DA97452EF3BB4 /* SampleFormatFLAC.cpp in Sources */, - 395D617A25F156228EB5B0D6 /* SampleFormatMP3.cpp in Sources */, - A2FF919B8ED51899777F33EC /* SampleFormatMediaFoundation.cpp in Sources */, - D4689EC5407A466CC9CBD8AB /* SampleFormatOpus.cpp in Sources */, - F98711A1E51B07494EE060FD /* SampleFormatSFZ.cpp in Sources */, - 3D9E57B6A9BA49A77292B614 /* SampleFormatVorbis.cpp in Sources */, - BD3A568FA9E3BDBED279D93D /* SampleFormats.cpp in Sources */, - DBCF74CD47350854D00DAA2C /* SampleIO.cpp in Sources */, - 7FC08C1F6B2853EDD4936703 /* Snd_flt.cpp in Sources */, - 19C4832785DEE6C8CE00F75C /* Snd_fx.cpp in Sources */, - 9E7F6C348AE73202F3524718 /* Sndfile.cpp in Sources */, - 474F3CDDB3699F7EFC8BAF12 /* Sndmix.cpp in Sources */, - 2BC31655176D4C64003E547F /* SoundFilePlayConfig.cpp in Sources */, - 1562FC89817C5F2BCA9E6FBF /* Tables.cpp in Sources */, - 964FD5E882B79BB6EB22B0CC /* Tagging.cpp in Sources */, - 9DE27FDE894A46ACF2B55AC2 /* TinyFFT.cpp in Sources */, - A86D659114D3F8179DAB9AF0 /* UMXTools.cpp in Sources */, - 06288CA0F2D0F3CF1B670F4F /* UpgradeModule.cpp in Sources */, - 592F50D9C594E35F4E6D8538 /* WAVTools.cpp in Sources */, - 40AD65842C2BB61D152374B5 /* WindowedFIR.cpp in Sources */, - 4F15E1953B7DA763A4E8BB79 /* XMTools.cpp in Sources */, - 1AA1D44B860668D20FDF09AB /* load_j2b.cpp in Sources */, - B2726EB61E8F60A7E766CD14 /* mod_specifications.cpp in Sources */, - 99845C8105F55EFACE13D982 /* modcommand.cpp in Sources */, - 42C586B82E43D751173B95E9 /* modsmp_ctrl.cpp in Sources */, - 791105846579CB51CEE4DF67 /* pattern.cpp in Sources */, - 00695BFF6C7A03A6F5CB95E5 /* patternContainer.cpp in Sources */, - 468D8E30324D1FD59B6A07E0 /* DigiBoosterEcho.cpp in Sources */, - 00CDEF35EC0B9AB1958E76E3 /* LFOPlugin.cpp in Sources */, - 96964549826B8DFCAB1ACDF8 /* PlugInterface.cpp in Sources */, - FB8E692BE763B1DE1013F1DA /* PluginManager.cpp in Sources */, - 286C08F99488FAE95D606757 /* SymMODEcho.cpp in Sources */, - 98386A3B04555C2CCD2CC999 /* Chorus.cpp in Sources */, - 83B3BA15EF25FD3138BA32B6 /* Compressor.cpp in Sources */, - 29D0281815A570CB3E54B0C7 /* DMOPlugin.cpp in Sources */, - 265149CF923834C59B263641 /* DMOUtils.cpp in Sources */, - 2808B687947AF8A3DD0E2E28 /* Distortion.cpp in Sources */, - 7C697F89E87A273071CCB96F /* Echo.cpp in Sources */, - 57AF309E435966AD2C2A6EC8 /* Flanger.cpp in Sources */, - 8E12E12CFA2ED31DC306408B /* Gargle.cpp in Sources */, - 9BC4A6C78784376CF0A11F77 /* I3DL2Reverb.cpp in Sources */, - 225607830E003D92F7D044AD /* ParamEq.cpp in Sources */, - 4BE9706C37A90111A0C6E91B /* WavesReverb.cpp in Sources */, - 4F32CE34BB4C31D6046F416A /* tuning.cpp in Sources */, - 7F669750EB773FF774C9D136 /* tuningCollection.cpp in Sources */, + 8E038C28FA3EECEB0334697B /* ComponentManager.cpp in Sources */, + 2072C95A0CDA8F287545A43E /* FileReader.cpp in Sources */, + B31E743B1FAE352628AA163E /* Logging.cpp in Sources */, + F35A82D7DFD7751A0855762E /* Profiler.cpp in Sources */, + 941244A4002DA745494FB7D9 /* misc_util.cpp in Sources */, + 7922C7B4E53C2A562E5F3AEA /* mptFileIO.cpp in Sources */, + FD808E2269458D1232ABBDDC /* mptIO.cpp in Sources */, + 355D00B621C5C6838A30DB99 /* mptLibrary.cpp in Sources */, + 8154385BED18374BB67E6715 /* mptOS.cpp in Sources */, + A9D5FE6B154601E5DE647B6D /* mptPathString.cpp in Sources */, + A16384AD0D7EE74E56A0F7E2 /* mptRandom.cpp in Sources */, + FBD5325967F095FAB012A68E /* mptString.cpp in Sources */, + 79B21734E5ED77F7EEE2F486 /* mptStringBuffer.cpp in Sources */, + 63C1C45ACFFC241ED8F1A1AD /* mptStringFormat.cpp in Sources */, + 39F32B1B25717CB40E693A4C /* mptStringParse.cpp in Sources */, + 53E63271BF75F45BC871D573 /* mptTime.cpp in Sources */, + DF3FBEB34BCF7F9E54CB60B6 /* mptUUID.cpp in Sources */, + 47CF92D1330E3D4DDC90197F /* serialization_utils.cpp in Sources */, + 6577D28151F4C5C47A71C6D8 /* version.cpp in Sources */, + AEB9A2AD1A80FFC963DB8D2C /* libopenmpt_c.cpp in Sources */, + D918B85A452A6001CE7BF240 /* libopenmpt_cxx.cpp in Sources */, + 0ECD7F4CFAA1C7FF235107FC /* libopenmpt_ext_impl.cpp in Sources */, + D9596CF9C59816756E1BF3A6 /* libopenmpt_impl.cpp in Sources */, + 94841FAA80D6F69969F533AA /* AGC.cpp in Sources */, + F481BB59E0D39249C9F2CF59 /* DSP.cpp in Sources */, + 5E123B28CAD63918933C6AE2 /* EQ.cpp in Sources */, + 129C12577EB675F8C7D8858C /* Reverb.cpp in Sources */, + 0A8AB00D76719B037F5F9D7F /* AudioCriticalSection.cpp in Sources */, + 58F6331CC4BC90380D181F9B /* ContainerMMCMP.cpp in Sources */, + C2AB5089AE54B8B8D7EAD337 /* ContainerPP20.cpp in Sources */, + 3C696864A8A4C827B19945B7 /* ContainerUMX.cpp in Sources */, + D7F10A90432D6B534C22E8E2 /* ContainerXPK.cpp in Sources */, + 5007568E3C6F1C5CA5DA3072 /* Dlsbank.cpp in Sources */, + 71B91D3A5D21E407C68CF81D /* Fastmix.cpp in Sources */, + 08D80A8DF48072BC1D178E3B /* ITCompression.cpp in Sources */, + 022E3BEAEE9501B8570116CE /* ITTools.cpp in Sources */, + E1941AF34D7C05E9566A0765 /* InstrumentExtensions.cpp in Sources */, + D787D7D343ED6A5ACCC50C33 /* Load_669.cpp in Sources */, + 08C49551742929D8FD01CBB0 /* Load_amf.cpp in Sources */, + 97AF7D4A031511D18CEDB2A9 /* Load_ams.cpp in Sources */, + C8EE6A563454FEDCBD2CA0B5 /* Load_c67.cpp in Sources */, + EDF75E64595DF2EAE23594C3 /* Load_dbm.cpp in Sources */, + B03890399C4B909245356D7F /* Load_digi.cpp in Sources */, + 4CB0770CB8150B9341EEAC6B /* Load_dmf.cpp in Sources */, + 9B8CE70A07F27A9190CA1C6A /* Load_dsm.cpp in Sources */, + 16DC72A602EF72FFABD84FEC /* Load_dsym.cpp in Sources */, + 805840A2ECBDD32875967501 /* Load_dtm.cpp in Sources */, + 4DFAB739B95F4BC04238ED98 /* Load_far.cpp in Sources */, + 9D7C0CC309E29F4992BA4122 /* Load_fmt.cpp in Sources */, + 300087E79C651A6E253EBC46 /* Load_gdm.cpp in Sources */, + 161E7DCC828310530B5CB22B /* Load_imf.cpp in Sources */, + 9988477985F00D47EE5B225D /* Load_it.cpp in Sources */, + 426AF08BAECF831237A825EB /* Load_itp.cpp in Sources */, + 749CF6D7E0018A5E69DA2B37 /* Load_mdl.cpp in Sources */, + 0F0737117B6CCA9704456C70 /* Load_med.cpp in Sources */, + D53337084199CA8ECA716C67 /* Load_mid.cpp in Sources */, + EC695FDA58CFF260E1A79439 /* Load_mo3.cpp in Sources */, + 160E18618273ABE70B4C4DC0 /* Load_mod.cpp in Sources */, + 8B31F07CF7968303806F25DC /* Load_mt2.cpp in Sources */, + C8AE806C341414F3BDECB5CB /* Load_mtm.cpp in Sources */, + 88964437741495D05D0C5368 /* Load_mus_km.cpp in Sources */, + ACDC9E5E184232E5A11AD4BD /* Load_okt.cpp in Sources */, + 80416239ECA6F5BF757F9798 /* Load_plm.cpp in Sources */, + 69863CC3D5EBCF495EC47122 /* Load_psm.cpp in Sources */, + 0C9B62277800F6AD01D99786 /* Load_ptm.cpp in Sources */, + 30B9E7DA9C1E7B6125F71C3A /* Load_s3m.cpp in Sources */, + 90D49189FC3925108512C7E8 /* Load_sfx.cpp in Sources */, + CC18DF7B387E7202C15614DB /* Load_stm.cpp in Sources */, + D1EF273F3D55BBC5C62D5D9E /* Load_stp.cpp in Sources */, + 9572CE6281F01EFC6AE8DC93 /* Load_symmod.cpp in Sources */, + 2C2D21CD9892B453216B562C /* Load_uax.cpp in Sources */, + 951256050178E98B8A508B64 /* Load_ult.cpp in Sources */, + A77F529413E5E51A9CBD87F3 /* Load_wav.cpp in Sources */, + A05158AD8CB91E7BF5243391 /* Load_xm.cpp in Sources */, + 581CDF59C48CE1D28DAB5B5B /* MIDIEvents.cpp in Sources */, + 3ADBE865A64BEBDE6F6A6567 /* MIDIMacros.cpp in Sources */, + EAA3E398D6B6E3F17FA0C0DE /* MPEGFrame.cpp in Sources */, + 7F229F586B8A6526D4F5793C /* Message.cpp in Sources */, + D787ED4843C34D0C4CB8CA9B /* MixFuncTable.cpp in Sources */, + 463FA478B2AFA6F17BCE207A /* MixerLoops.cpp in Sources */, + 4EB71B563A60838563F69E04 /* MixerSettings.cpp in Sources */, + 1580394E81F03BC74A0FB64F /* ModChannel.cpp in Sources */, + 50F162093C9ACA386530E6B7 /* ModInstrument.cpp in Sources */, + 1D86FD170999FD70B282DA5D /* ModSample.cpp in Sources */, + D165DFACBDE32F46A6DBEDDD /* ModSequence.cpp in Sources */, + 4707EC653359C3551C780066 /* OPL.cpp in Sources */, + A01C99AD8C2F9906351976F3 /* OggStream.cpp in Sources */, + 4EAA73AC3A2767EF63A46703 /* Paula.cpp in Sources */, + 2063983B8CD39AB455F2143D /* RowVisitor.cpp in Sources */, + 409D1EACAC02B23235DB530B /* S3MTools.cpp in Sources */, + 113B8D15FDCE82BD6693DC71 /* SampleFormatBRR.cpp in Sources */, + 5AB2FDC9C6C3A5704F1538B0 /* SampleFormatFLAC.cpp in Sources */, + 9637427A82CB3722EB8F91D6 /* SampleFormatMP3.cpp in Sources */, + 7F4D102F6B23972C54CDB17F /* SampleFormatMediaFoundation.cpp in Sources */, + D18E9AC13DA04268C6F1D4A7 /* SampleFormatOpus.cpp in Sources */, + BF9261DBAB26578314EBB037 /* SampleFormatSFZ.cpp in Sources */, + 7A37F5A1E653E792AF2B5400 /* SampleFormatVorbis.cpp in Sources */, + DAD9920DC682FA3CEF1816BC /* SampleFormats.cpp in Sources */, + D8487DCD44AE1054CD86B22C /* SampleIO.cpp in Sources */, + 6552F40C51BABADABA25CFF0 /* Snd_flt.cpp in Sources */, + 3FB1AD0FABCB10B1F4ED2045 /* Snd_fx.cpp in Sources */, + 8411D42170799AEFD9E4AE05 /* Sndfile.cpp in Sources */, + B64A62092265C5AA6B87D53E /* Sndmix.cpp in Sources */, + 088467B4F42D9DC3DDFEA4DE /* SoundFilePlayConfig.cpp in Sources */, + D277A8AE3E920B5087B41BE4 /* Tables.cpp in Sources */, + 5CF48166485C4834B1C75C4A /* Tagging.cpp in Sources */, + FAAFAE98E61775664F83897C /* TinyFFT.cpp in Sources */, + A5E66D91114C01189A24A3F0 /* UMXTools.cpp in Sources */, + 23C7C81E0F70304E38064CCD /* UpgradeModule.cpp in Sources */, + 56A858D9C20DEC5F4BE68D38 /* WAVTools.cpp in Sources */, + 1DE1C529095F16C3F256D45A /* WindowedFIR.cpp in Sources */, + ACE20F50984AD61D01B6EA33 /* XMTools.cpp in Sources */, + 171ADD4B837F70D20C5812AB /* load_j2b.cpp in Sources */, + EF0B0CA25B28FE9224006B00 /* mod_specifications.cpp in Sources */, + D63067A542A1691E0BC0E3A6 /* modcommand.cpp in Sources */, + 1FF9E65D0B7737F7F46EF58E /* modsmp_ctrl.cpp in Sources */, + D6DE333EC246FA0B2BB20E22 /* pattern.cpp in Sources */, + FD8E57FB69A0FFA1F2F191E1 /* patternContainer.cpp in Sources */, + 0CFE87AFF8BD185461DB005F /* DigiBoosterEcho.cpp in Sources */, + 9DB270B189F11A2D3274F75E /* LFOPlugin.cpp in Sources */, + DC1D804FC8F2C702F1A107FF /* PlugInterface.cpp in Sources */, + 18FBEDA104D035552D7F7551 /* PluginManager.cpp in Sources */, + 6505A6E4D12198D59AF90443 /* SymMODEcho.cpp in Sources */, + D5D1072741EEF9170AC66685 /* Chorus.cpp in Sources */, + A92C76B2159FB8CE5E33EE52 /* Compressor.cpp in Sources */, + 8FBC26157B916EC8A440AEC4 /* DMOPlugin.cpp in Sources */, + D522C3AC410AAEA24AF8AF1E /* DMOUtils.cpp in Sources */, + E5F7C7CE516A0AEB9AFE3F6F /* Distortion.cpp in Sources */, + 798F7B85E5A0232C6EF2B56B /* Echo.cpp in Sources */, + 347081FD201AB70C09EBBE27 /* Flanger.cpp in Sources */, + CBAB7E1837C8700900A0DD76 /* Gargle.cpp in Sources */, + 6135A0464DF530EBB61219F6 /* I3DL2Reverb.cpp in Sources */, + FF1658E2EBC08DF1D491950C /* ParamEq.cpp in Sources */, + A8D0C0959490513AFDAD3945 /* WavesReverb.cpp in Sources */, + 0C487A597862DDFAC184ED8E /* tuning.cpp in Sources */, + 7C8C934CE89D3BF371EFCD32 /* tuningCollection.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1310,6 +1922,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 +1957,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1371,6 +1995,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 +2028,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1417,7 +2053,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 388822CDA49D90232D5A6A84 /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { + FB1BD283673140DAF0ED193B /* 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 14777) +++ 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 14777) +++ build/xcode9-macosx/libopenmpt.xcodeproj/project.pbxproj (working copy) @@ -8,275 +8,371 @@ /* Begin PBXBuildFile section */ 04B9F7EDF020BEBB598CD2D1 /* BuildSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = B3EA35381FAF3428E81465F2 /* BuildSettings.h */; }; - 5977A663C5DC39EA4EB5DBC2 /* CompilerDetect.h in Headers */ = {isa = PBXBuildFile; fileRef = C8BB03B6B40DDBA59D2C18B6 /* CompilerDetect.h */; }; - 97A51AD6834E8205ACE49D84 /* ComponentManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF79CCBECBE1928C344DA7A2 /* ComponentManager.cpp */; }; - FEF158D1EA6FA96AD3676702 /* ComponentManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DE7DDE97901418BC223511F /* ComponentManager.h */; }; - DAD9CB9EC656BFE1EFD3BFF5 /* Endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C2B344957B1EEF1EDB38C9 /* Endianness.h */; }; - 6229FC8D4E91C25BB7FCD671 /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7188A7C7DD4CA6B7A6B2D681 /* FileReader.cpp */; }; - 897DB89B75FAABDE9E77ACF2 /* FileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 789C40CDE455AB776DB5C551 /* FileReader.h */; }; - 83698039EFCE13C078A7B598 /* FileReaderFwd.h in Headers */ = {isa = PBXBuildFile; fileRef = DB7781B2C7C958A2B0E895B2 /* FileReaderFwd.h */; }; - B7827C2623477B16ECACABE0 /* FlagSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 469D619132EE4CD35B523B95 /* FlagSet.h */; }; - 354D6662A1DC274DAAD80865 /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C444C007B080C3711993DB68 /* Logging.cpp */; }; - DC378AE848FC88D81162B9A2 /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B472BF53798163760FC04F9 /* Logging.h */; }; - B559BADCA1D6AD1FCA53AE33 /* Profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 242D314090E69BEA1946B6C4 /* Profiler.cpp */; }; - 93FCA3CF7F4E7BBF686DB8CF /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2F52B3579EA732A0876232 /* Profiler.h */; }; - 96E97B500204DFF14B26EF85 /* misc_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45347CD8311B3ED0DA6BA4ED /* misc_util.cpp */; }; - 7DD0DCFCE95F9EE7F25B7FFF /* misc_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C9B7D60F8D680CA61E998C1 /* misc_util.h */; }; - 3283689D1ED53F8D07F47C9D /* mptAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D8BBFD2D47117D7630CC7C /* mptAlloc.h */; }; - BB034F2E27931019308FF130 /* mptAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A4F1515768B187FDF9D3076 /* mptAssert.h */; }; - 826742EFEECCD57577A5774E /* mptBaseMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFA3D21664C15114F6B5221 /* mptBaseMacros.h */; }; - F40F5E14E07724E249E338F8 /* mptBaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C38BA8062F50A7F6F8B5D7C0 /* mptBaseTypes.h */; }; - F200F018DE68B6E647D4CAFC /* mptBaseUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 016662BA6D2A61AA36909174 /* mptBaseUtils.h */; }; - 003C0BC0EC22CDB7957333D5 /* mptCRC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FED58597BD0679984D395D5 /* mptCRC.h */; }; - 991FEA408587B00EEEF2C424 /* mptException.h in Headers */ = {isa = PBXBuildFile; fileRef = 48006EA3B4C46C937D2A9D5D /* mptException.h */; }; - B748981BA3C6E8B48CBEA64C /* mptExceptionText.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBD12C8FBD7756944FA85FD /* mptExceptionText.h */; }; - 18A728A284C18B43CDE39BD7 /* mptFileIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 87F8F9C673DFBBBE1C3022DC /* mptFileIO.cpp */; }; - 7F45D821EBD4990CF4D07A24 /* mptFileIO.h in Headers */ = {isa = PBXBuildFile; fileRef = CE66D9C8BAA2DC3223B5F429 /* mptFileIO.h */; }; - 1C8E80F988527FE951B8AFB3 /* mptIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BB5029B7706EEDCA06ADC9E /* mptIO.cpp */; }; - 83AABB5EEF63260978C340E3 /* mptIO.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C19A61BEE764C8A72DEA93 /* mptIO.h */; }; - B475924FA0DD581D09496D33 /* mptLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CE42646D8A82536A10E5600 /* mptLibrary.cpp */; }; - 5B8D4BEC470A3F2F70873F43 /* mptLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A01842376BAEECDFF1909A8 /* mptLibrary.h */; }; - A1EC672E0D7C291916780A31 /* mptMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = B090B9769CCCBCE005DFD4D7 /* mptMemory.h */; }; - 3DC787D929195FC912389CD9 /* mptMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA9A22F5818F8AEA101B3AE /* mptMutex.h */; }; - 89ECFABBF5B0F9ABBE162A76 /* mptOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D81B905BC46C7B9DEDD0695F /* mptOS.cpp */; }; - 07CD12A573867D4FFCE59729 /* mptOS.h in Headers */ = {isa = PBXBuildFile; fileRef = DF3010EFCB56DA55B49C5F21 /* mptOS.h */; }; - 93F995367F768979A8F3898D /* mptOSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 42EAD35FAEA33E0A370359E4 /* mptOSError.h */; }; - DA5A9FC2C66D9F1B6F577C08 /* mptOSException.h in Headers */ = {isa = PBXBuildFile; fileRef = A92ACF5915BA90441EB6715C /* mptOSException.h */; }; - CA192FA4368A311DFFA8ABA5 /* mptPathString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79EBBC0F6568B0528EE5B066 /* mptPathString.cpp */; }; - B1D4757C1D3A0903A612ABDB /* mptPathString.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C6EBAA2C18C39A153700AB /* mptPathString.h */; }; - 42BF1D47AED980E8F7FB907C /* mptRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A2051662607135ECF57797B /* mptRandom.cpp */; }; - 294B75EB95DA36D69ED617EE /* mptRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 38BA47EA24F64A548D08634B /* mptRandom.h */; }; - 3C01D6C7A8C5D4B7712B0582 /* mptSpan.h in Headers */ = {isa = PBXBuildFile; fileRef = ABB43B489705278AC069154C /* mptSpan.h */; }; - 9E08049F0A236740534577D4 /* mptString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DCE2ABD39B5ECB4E20553D2 /* mptString.cpp */; }; - 858D411FF11C030AFA18E421 /* mptString.h in Headers */ = {isa = PBXBuildFile; fileRef = 14132ED7004F314169614938 /* mptString.h */; }; - 3311F54C9F4C5510A841D29F /* mptStringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BC5B2E4772D79B2E0988DC8 /* mptStringBuffer.cpp */; }; - 5AC63AFAC6363D738F55B7FB /* mptStringBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 097E1645F5FA09881E780A9C /* mptStringBuffer.h */; }; - 462288DCB25DE89FBB52652F /* mptStringFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 355A76D121C23C9F8A2D51B5 /* mptStringFormat.cpp */; }; - AD76A01919E7A292E2051D1B /* mptStringFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CEEB443686BA88691E8A89A /* mptStringFormat.h */; }; - BC43C5C9A8C1156391B9D3FA /* mptStringParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BAA820277C4E5A3C0E6F537 /* mptStringParse.cpp */; }; - 41EE029CAD5E0515767D7F9D /* mptStringParse.h in Headers */ = {isa = PBXBuildFile; fileRef = 928059B2FE0F1B9D070CFCB4 /* mptStringParse.h */; }; - E9EB5A2FD5684E72FEE54E86 /* mptThread.h in Headers */ = {isa = PBXBuildFile; fileRef = F8E2355B649CA005EDFBBADF /* mptThread.h */; }; - 7DBE1EBF693B120292B81216 /* mptTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CC952A87882BD5201E2D72C /* mptTime.cpp */; }; - 24B765E010093DD0F9277AE0 /* mptTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 9319403DFF8795BC487150BC /* mptTime.h */; }; - 0918AA01F5949D441E129E58 /* mptUUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18FB305284B49BFC0D14B6D6 /* mptUUID.cpp */; }; - C7B22437B304FC269C233937 /* mptUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F5892890BC7E70854B0A208 /* mptUUID.h */; }; - AAE911569628BCD13FAB9803 /* serialization_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 990A32C5054692880E3B0F18 /* serialization_utils.cpp */; }; - 114631F3FDD9269B669E804F /* serialization_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C6C6E84C37C961155643EA /* serialization_utils.h */; }; - CF9B52883B60517804C68142 /* stdafx.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E6F72886AC05DCA93244C8C /* stdafx.h */; }; - 48A5602B3422546E5D9F5482 /* version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F784BBFA633E26A5EC9D407F /* version.cpp */; }; - 46E408D73236E0C61B551DD7 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = BEDEE25B2A4D38DB7336F3DA /* version.h */; }; - 71C931155DDC316E06C60E5B /* versionNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C36B686C522D53754E0E6B /* versionNumber.h */; }; - F0334E795CA450F225C3CA7A /* libopenmpt.h in Headers */ = {isa = PBXBuildFile; fileRef = FF7D561FEBFA496214784A76 /* libopenmpt.h */; }; - 128ADA117EC53AD587BAB764 /* libopenmpt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A12227FB8D8AEDC8F6F501DF /* libopenmpt.hpp */; }; - F136D2675DFD2E84A658BDE6 /* libopenmpt_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0A38FA6CCB68FFF75A06CEC /* libopenmpt_c.cpp */; }; - 62872C224EC6D69DF748B3CF /* libopenmpt_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 51358D5ABD70ED1DC6656AAD /* libopenmpt_config.h */; }; - DCF2BB5E48046405D155F644 /* libopenmpt_cxx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB8C8BC6970ADC5F80029AF7 /* libopenmpt_cxx.cpp */; }; - 01E956A36DAFB3BFB60A4222 /* libopenmpt_ext.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CBC8E2DCDEC83B85C8A528 /* libopenmpt_ext.h */; }; - 631893B2CF293B59587BCD98 /* libopenmpt_ext.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D2619CDABEDFEC73A7D7AA0B /* libopenmpt_ext.hpp */; }; - F160FBD5DD35438906E58285 /* libopenmpt_ext_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00F1936D6C023C14F553CE53 /* libopenmpt_ext_impl.cpp */; }; - 4F6DE6103B422EC464F16DC0 /* libopenmpt_ext_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E4A50270A5CF8CD93AD8A0D /* libopenmpt_ext_impl.hpp */; }; - 3C74EB7D28B395F9D135722B /* libopenmpt_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB31548F576DB452606231E2 /* libopenmpt_impl.cpp */; }; - C3AA4348AFE9EDC3586CCAF5 /* libopenmpt_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1278B7FF7EB317C387A89452 /* libopenmpt_impl.hpp */; }; - 70F53D505C9F735F45707B7A /* libopenmpt_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F96AEB5CB5C0BD214B89934 /* libopenmpt_internal.h */; }; - 19A28366851619C44E6066D3 /* libopenmpt_stream_callbacks_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 881BE943741C7DBE9DE4E942 /* libopenmpt_stream_callbacks_buffer.h */; }; - 02FAF2A26E180770B7E50C82 /* libopenmpt_stream_callbacks_fd.h in Headers */ = {isa = PBXBuildFile; fileRef = 5196A3873D016493E61CC9F8 /* libopenmpt_stream_callbacks_fd.h */; }; - DA4654D946B0E93BCFF397E6 /* libopenmpt_stream_callbacks_file.h in Headers */ = {isa = PBXBuildFile; fileRef = E9072015D5DDA612BE87C165 /* libopenmpt_stream_callbacks_file.h */; }; - 589C32B1C4B824A28D90910F /* libopenmpt_version.h in Headers */ = {isa = PBXBuildFile; fileRef = 6754160A53FD7D397C9399B8 /* libopenmpt_version.h */; }; - 1AA3E95C8613ECD54F32665E /* AudioSample.h in Headers */ = {isa = PBXBuildFile; fileRef = E94A3B16D5C72E59FE442F6D /* AudioSample.h */; }; - 5F2B61424BA8548574255599 /* Dither.h in Headers */ = {isa = PBXBuildFile; fileRef = 376C68D9A325D3832C85ED5D /* Dither.h */; }; - 31A4F8A39D098C2A26E22D03 /* MixSample.h in Headers */ = {isa = PBXBuildFile; fileRef = E04519EDCC97F0DCB5B62DED /* MixSample.h */; }; - 945D894680F17EEEE9B5D8A2 /* MixSampleConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 83603E98EFD04011B8EFBA99 /* MixSampleConvert.h */; }; - C1E8E0E1AD66317B965EEF12 /* SampleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 10C48C997CDEEF3AC50000CF /* SampleBuffer.h */; }; - 1211D7DEFE8E2778E786E50F /* SampleFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = C135F3922D505634767266C8 /* SampleFormat.h */; }; - D623E641C2F82DF5EBA76DF1 /* SampleFormatConverters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E4E0060BA5FA80643B13A46 /* SampleFormatConverters.h */; }; - 2876BC03140AB2AB7DCE0B60 /* SampleFormatCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 97CCA6B8033DA931CC5B23BA /* SampleFormatCopy.h */; }; - B7DD7231A32F4A218C4E8731 /* AGC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46183367B28688E6FB6F43E6 /* AGC.cpp */; }; - 5E570F334A3ED12AF38E3748 /* AGC.h in Headers */ = {isa = PBXBuildFile; fileRef = CD394DF7391D5C3742208A73 /* AGC.h */; }; - 17DB0EE1032DE6D0EC4B23E1 /* DSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A639A31612A8F8955B91B395 /* DSP.cpp */; }; - 15C09DFB01A75FF3AAF7C510 /* DSP.h in Headers */ = {isa = PBXBuildFile; fileRef = 2494821B9077915B997ABF97 /* DSP.h */; }; - 215326728D172562567D552C /* EQ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90CB8F337C1C7B75A5806937 /* EQ.cpp */; }; - 08C29F53747B0AFEFDDA24D8 /* EQ.h in Headers */ = {isa = PBXBuildFile; fileRef = 5712F8F64338C25D2C7E4729 /* EQ.h */; }; - 55866632C1A0C9D30AC3D967 /* Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4F5C613B0DC880B592DEF28 /* Reverb.cpp */; }; - 3C69FEA8A8F8BF93B1F4A0AB /* Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B509D47778CA0B1E09EB8A8 /* Reverb.h */; }; - 8DAD47C4F99432BA02833436 /* AudioCriticalSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C7C769D28106C4591D4C5F9 /* AudioCriticalSection.cpp */; }; - F42D6146604A53372922C0A4 /* AudioCriticalSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8374A0D26F1D080298B32381 /* AudioCriticalSection.h */; }; - 39AC8F942555F7C34EEB1243 /* AudioReadTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4820202EB485B3B43D5E558D /* AudioReadTarget.h */; }; - B8E221FAA44AE8C70DB6FCDD /* BitReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2770B7559334B6455C9AE60F /* BitReader.h */; }; - 02B9DE21EECBDE7A97B5BB67 /* ChunkReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 234520938FD4E17D98D0C295 /* ChunkReader.h */; }; - 7BA88CC267105390D07B67A6 /* Container.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD00B1E76940A0E3FFA3AD8 /* Container.h */; }; - 3243F49B9E0951B8E764DF1A /* ContainerMMCMP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81C3378A6DD637E316C014D0 /* ContainerMMCMP.cpp */; }; - 5CC56D85486ED5B47104F133 /* ContainerPP20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B374EEFF79CE1758075834E /* ContainerPP20.cpp */; }; - 96B71BAA02F37B6D0BE8F8FC /* ContainerUMX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5CD504691351714FAA02B2A /* ContainerUMX.cpp */; }; - 285F14E2949A74A59D8FF134 /* ContainerXPK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60C9E97F4C31B04DB59CC463 /* ContainerXPK.cpp */; }; - F33927D4DFA1EDA1480D02B8 /* Dlsbank.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82966FC4EE5A6EB4B7C09E7E /* Dlsbank.cpp */; }; - 9A65CE7D86E2C1C0AF5FC2D4 /* Dlsbank.h in Headers */ = {isa = PBXBuildFile; fileRef = 094AC98A75033435FE624E0F /* Dlsbank.h */; }; - 14ECEE7F0054B54D69BFC963 /* Fastmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 033046886FF44478385A7542 /* Fastmix.cpp */; }; - 9ABABC38062050BF8FF8F197 /* FloatMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = A976C22395C899137EE7D623 /* FloatMixer.h */; }; - C236E8A5AEDF4FD5D7756B54 /* ITCompression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA75D59E26DB6825AFB30AFE /* ITCompression.cpp */; }; - 293CB97915BA0913FEB1C7AA /* ITCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 785621D1E47084722D939406 /* ITCompression.h */; }; - A5600C3091C8D2FDFA33E713 /* ITTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F445C353600AC2432970F20D /* ITTools.cpp */; }; - CC377690B8B469D3E1316AE7 /* ITTools.h in Headers */ = {isa = PBXBuildFile; fileRef = FB7426CE672E9178F08DAB52 /* ITTools.h */; }; - 64B8B1A9D09F9C9FD98D9E1B /* InstrumentExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A411869F38072E08FD60E2 /* InstrumentExtensions.cpp */; }; - 49631505B57D78A6FE9F883A /* IntMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A6F598CD8DB79076DE1DAE /* IntMixer.h */; }; - DA0ECFD34674625ACF4C0433 /* Load_669.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E922BFF4D57496E4BE93D3F4 /* Load_669.cpp */; }; - 0B4B8D5177B020D80089C2B0 /* Load_amf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7ABCB9EE660E91DE4F2DCEEE /* Load_amf.cpp */; }; - 9A36754A069C08D18F74AAA9 /* Load_ams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9723D6595C414557EE35165 /* Load_ams.cpp */; }; - CB75625637DBF5DCC0B397B5 /* Load_c67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A2F3980268110700FA04D80 /* Load_c67.cpp */; }; - 67BA1D31D31FB1B75CF85290 /* Load_dbm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FADA47D2BFF7B6D141EB97D /* Load_dbm.cpp */; }; - 13A07838FFB27891A89C557E /* Load_digi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 626C67FACEFB28E5D7F709FD /* Load_digi.cpp */; }; - 4F376F0CBB9C02934475A46B /* Load_dmf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEEA1E22A4079D2135FB6E2 /* Load_dmf.cpp */; }; - 9E13DF0A0A7972919351146A /* Load_dsm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D1D0419196FDB08028E1819 /* Load_dsm.cpp */; }; - 79435BA565565BFE0E4038EB /* Load_dsym.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08D8B6C2746778AD7D6359C5 /* Load_dsym.cpp */; }; - FA1AFF6E668092F5EF5834CE /* Load_dtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2A55F16DEF73606C7167416 /* Load_dtm.cpp */; }; - 5081AF39BCE642C045BFE498 /* Load_far.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FB35A128B05320274246F12 /* Load_far.cpp */; }; - A00304C30C69974995413922 /* Load_fmt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF83F00ADBD5C7FAC4F4040B /* Load_fmt.cpp */; }; - 33877EE79FEC116E28C5B346 /* Load_gdm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2BF428A8E111A7A7730578A /* Load_gdm.cpp */; }; - 19A574CC850A08530EE3A92B /* Load_imf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8156F5FB467464F9D86835F /* Load_imf.cpp */; }; - D3E39AFBBF4B61C928B775DF /* Load_it.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BE69F5F97AA9E4F6010CF19 /* Load_it.cpp */; }; - 45F1E78BB1567B123A2F1DEB /* Load_itp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74162BB8606802A849873FB8 /* Load_itp.cpp */; }; - 7723EED7E388815E6C612337 /* Load_mdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 66A16AE852F341D83B127FE8 /* Load_mdl.cpp */; }; - 128E2E117EF3C19707CC6370 /* Load_med.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 213FEC7A0D91C36AF6AF007B /* Load_med.cpp */; }; - D8BA2E084420C28ECDF86367 /* Load_mid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27D80507132ADDF6FC481A07 /* Load_mid.cpp */; }; - 662C1EA7D291B12D5B6A5306 /* Load_mo3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE23C7BACA759EAAB394DBBA /* Load_mo3.cpp */; }; - 19950F6185FAA2E70ED344C0 /* Load_mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C80574FBB4574BEB9D7688FB /* Load_mod.cpp */; }; - 8EB8E77CFA1D7B0383F61CDC /* Load_mt2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DECE55F093EBD4FF25CFA5F /* Load_mt2.cpp */; }; - CB35786C379B0BF3C073ADCB /* Load_mtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AEFB64126418E310F60CB41 /* Load_mtm.cpp */; }; - AB62E49197E0342B80D8F2C2 /* Load_mus_km.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAE3374A26FE9AEB6F20AB7F /* Load_mus_km.cpp */; }; - 269F5D2B9204F1B11BDD928A /* Load_okt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EDE23268A30FB15734F3826 /* Load_okt.cpp */; }; - 83C85939EF2DEDBF78068F98 /* Load_plm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2EE6B1DDE40430DC75F801D /* Load_plm.cpp */; }; - 6C0D34C3D872C749614B6922 /* Load_psm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B3E749027904B8010AF8890 /* Load_psm.cpp */; }; - 0F225A277B87EDAD04608F86 /* Load_ptm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE209F35EA727625D391B335 /* Load_ptm.cpp */; }; - 3340DFDA9FA57261287E143A /* Load_s3m.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2D80BC78E2AE3B6774920C7 /* Load_s3m.cpp */; }; - 0A97505676FCE3DCFFD485B5 /* Load_sfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0258BF8EEEA9967ED7C8D38E /* Load_sfx.cpp */; }; - CF9FD67B3B056A02C4DD0BDB /* Load_stm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE062679AA58FD6893773A79 /* Load_stm.cpp */; }; - D4761F3F40DCB2C5C9B4549E /* Load_stp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A32656D88F782DC878976AD8 /* Load_stp.cpp */; }; - B83E6EBDA4BCBE568DB47CEE /* Load_symmod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C3277113DE8A125C009BA6 /* Load_symmod.cpp */; }; - 2FB418CD9B19AC5324F24D2C /* Load_uax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EDF51BD0A3129ADF34F66BD /* Load_uax.cpp */; }; - 667FC337D2E456BE5BBDF896 /* Load_ult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E77EEE5AD3D0C54ABCEF025B /* Load_ult.cpp */; }; - 01B1F8F96D168C80F6EE2D59 /* Load_wav.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B010DAF39C62B1E38581EEF3 /* Load_wav.cpp */; }; - BABFF0BFA627B78D0F93CBA3 /* Load_xm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9A325CB556824BB1ECE5485 /* Load_xm.cpp */; }; - 674CF55A53C9E89D7C46E9B1 /* Loaders.h in Headers */ = {isa = PBXBuildFile; fileRef = B67C94FB2236FFA5AB951980 /* Loaders.h */; }; - 320CD7C19E7CD93A679B53C3 /* MIDIEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01A54485ED2138C8169F38DC /* MIDIEvents.cpp */; }; - 50609E71BCC531F8459ED3D0 /* MIDIEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 88BD923C740F6A2C5D2EA73C /* MIDIEvents.h */; }; - FD2EDE41699FE0BA32BE5A43 /* MIDIMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC1C3DB0D89930F301173107 /* MIDIMacros.cpp */; }; - E41891CE507E2455D956C62D /* MIDIMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = B33EA6149F907D0488AFBA14 /* MIDIMacros.h */; }; - 4D0BCC97391ECCF0E207A9DD /* MPEGFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C6B0284C8FAC36ED1F6A486 /* MPEGFrame.cpp */; }; - F4C0C0A8E028877649949B8C /* MPEGFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = E37887224F3D861218A3B6DC /* MPEGFrame.h */; }; - B97DF2DAA5E5B8A80E51CDBE /* Message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51385011BDFC4E0186627FCB /* Message.cpp */; }; - E0FF4937CC7C3D7AF5F93D8E /* Message.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE0A34DFB990EF884F928D2 /* Message.h */; }; - 5AD886F7C613E7BACF08644A /* MixFuncTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9638FF8D5CB55C63E376ADC /* MixFuncTable.cpp */; }; - 819FE097ED0FE310B62E5D99 /* MixFuncTable.h in Headers */ = {isa = PBXBuildFile; fileRef = F02A9277DCA785BA052586CE /* MixFuncTable.h */; }; - C67E91D5B2D068C59BEFA5D5 /* Mixer.h in Headers */ = {isa = PBXBuildFile; fileRef = F513060161825B80AA6B1680 /* Mixer.h */; }; - 50D90FC1BC147084C509ED13 /* MixerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 884A9E2774B264F5DD1D790B /* MixerInterface.h */; }; - 0993995475039CCD3E221656 /* MixerLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78C9FA866446EEC98DC3EEDD /* MixerLoops.cpp */; }; - F009CCE65C6F5F6DE5470146 /* MixerLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F58B7222BAA8E1214C9CB22 /* MixerLoops.h */; }; - 3118DFD71DC1460746576286 /* MixerSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4031A658AC9639DF356FDBB7 /* MixerSettings.cpp */; }; - D8F55A7CC473AB15AD6B69AD /* MixerSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = C7865D7E33A1C01F7CC3D0B3 /* MixerSettings.h */; }; - 0FC9B2457B39B5BE44582F47 /* ModChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E78CF131D309E574FC86E588 /* ModChannel.cpp */; }; - 7606F46DE26B87F46B4429CD /* ModChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 05E927AFF13AFF9EDA593CAF /* ModChannel.h */; }; - 3352268B1FFB8DBA4891A939 /* ModInstrument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02A29E0A6E073291F7DFD369 /* ModInstrument.cpp */; }; - 5AC727C9464578622F3D36FA /* ModInstrument.h in Headers */ = {isa = PBXBuildFile; fileRef = 09DF9E1A75F901BCBE1B1250 /* ModInstrument.h */; }; - 80EDE5166C00E66F15EAC25C /* ModSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF6196981BF1578324ED389B /* ModSample.cpp */; }; - FEA2089CEA0ACF695376E37F /* ModSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 76BEF36AE282F25AABE82225 /* ModSample.h */; }; - 7B64ACE067E2FC7950DABA11 /* ModSampleCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A83B34AF69D16EC3FC02680 /* ModSampleCopy.h */; }; - F4317F07E0AFCFA0C9A78D38 /* ModSequence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63C188DFCFDBEB8018FEFB14 /* ModSequence.cpp */; }; - 5BDAADB147EDAD0AF0D68AF7 /* ModSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = AA1915CB16A9D6B51FA5B7CD /* ModSequence.h */; }; - 6A603FED56B216DD3FD153ED /* OPL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 195FB3DD85CD085DCEB6C35C /* OPL.cpp */; }; - A8D4363D94BBF8343D0C5F52 /* OPL.h in Headers */ = {isa = PBXBuildFile; fileRef = E0AF57C14C9366015596943D /* OPL.h */; }; - 038481ACEF96810598805EF2 /* OggStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 521A6663BEA9274EC7A50866 /* OggStream.cpp */; }; - 2A9434D116FCFA9E7F670FB5 /* OggStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 59F2261CC5B6250C8E1C56D6 /* OggStream.h */; }; - 31D801561D55F59846D2F5AC /* Paula.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4002FE2CACBB68D7351B83B1 /* Paula.cpp */; }; - D8D38EC8C42566B8AD44A3C8 /* Paula.h in Headers */ = {isa = PBXBuildFile; fileRef = C775A39B33E4F81A7CCDB31A /* Paula.h */; }; - E958FF05D5C0C5D33E2CDAE9 /* Resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8155EB0DED19EAFDB67F1AC8 /* Resampler.h */; }; - E3B68D174F27909018460A19 /* RowVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 129D1878FE190CBB27970CCF /* RowVisitor.cpp */; }; - 4A6FD192B6D464193FAD06F2 /* RowVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 597D37F345CF0EE32EEE4BF3 /* RowVisitor.h */; }; - 432416ACAF89A93238624B0B /* S3MTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2F24F229E44271287636422 /* S3MTools.cpp */; }; - 2A4CA40F966607B1DF881745 /* S3MTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 798297766569596E0EBABF8B /* S3MTools.h */; }; - 4B303DDB37C43283A0888C37 /* SampleFormatBRR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3EF8A9B0F608D14D87E079D /* SampleFormatBRR.cpp */; }; - 5D8C01CEC99DA97452EF3BB4 /* SampleFormatFLAC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CF15914786FAAAD61676845 /* SampleFormatFLAC.cpp */; }; - 395D617A25F156228EB5B0D6 /* SampleFormatMP3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08C5199174351C0A3D549692 /* SampleFormatMP3.cpp */; }; - A2FF919B8ED51899777F33EC /* SampleFormatMediaFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51283E4FBD9A806B062FB6EF /* SampleFormatMediaFoundation.cpp */; }; - D4689EC5407A466CC9CBD8AB /* SampleFormatOpus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A36716E08FE5667978DD2411 /* SampleFormatOpus.cpp */; }; - F98711A1E51B07494EE060FD /* SampleFormatSFZ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 914210D4FDB2124DC6D18CD5 /* SampleFormatSFZ.cpp */; }; - 3D9E57B6A9BA49A77292B614 /* SampleFormatVorbis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C53444118FCAB704192C7EF /* SampleFormatVorbis.cpp */; }; - BD3A568FA9E3BDBED279D93D /* SampleFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8CAEC9B8F1415041CAE328 /* SampleFormats.cpp */; }; - DBCF74CD47350854D00DAA2C /* SampleIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AFFD6F63651AEE61F70EBF6 /* SampleIO.cpp */; }; - C231B3712E4C1613776E26A7 /* SampleIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 11894234FD6F042CA6C06A49 /* SampleIO.h */; }; - 3E9F97AEAAB9FA4FF3DB0AE4 /* Snd_defs.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FA7C6CA6B8E88C214DFEEDF /* Snd_defs.h */; }; - 7FC08C1F6B2853EDD4936703 /* Snd_flt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8ED5D7DDFA99D6CDC3FF0698 /* Snd_flt.cpp */; }; - 19C4832785DEE6C8CE00F75C /* Snd_fx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0889B141F46F73399DC0D956 /* Snd_fx.cpp */; }; - 9E7F6C348AE73202F3524718 /* Sndfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DE5ACEAB9A9ABDA820FDCA4 /* Sndfile.cpp */; }; - 8544208271C113C59A3E14D9 /* Sndfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 146A3EBF8023A9690983C343 /* Sndfile.h */; }; - 474F3CDDB3699F7EFC8BAF12 /* Sndmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F9C7BC50B833DBDB4D3A3DA /* Sndmix.cpp */; }; - 2BC31655176D4C64003E547F /* SoundFilePlayConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A2316F1A6E9720DEF440170 /* SoundFilePlayConfig.cpp */; }; - D2135289BE52FC0467D5D836 /* SoundFilePlayConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = C13B7D272D77DDEA366C5A7A /* SoundFilePlayConfig.h */; }; - 1562FC89817C5F2BCA9E6FBF /* Tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847994AF706056A719B1BCC4 /* Tables.cpp */; }; - FC54EA1568E4AB0071E08C18 /* Tables.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BE4B6B63720BA20A032D217 /* Tables.h */; }; - 964FD5E882B79BB6EB22B0CC /* Tagging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E2CE45C7AF0E24C43561317 /* Tagging.cpp */; }; - 7DB6A4C36933980692B0981A /* Tagging.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CC13DCB787AA87501DAC24F /* Tagging.h */; }; - 9DE27FDE894A46ACF2B55AC2 /* TinyFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECAC07275871061721D736E1 /* TinyFFT.cpp */; }; - C4DBB005B058A448D9D5A45C /* TinyFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BDB4C45F771F6FE8D63949 /* TinyFFT.h */; }; - A86D659114D3F8179DAB9AF0 /* UMXTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F788BDF4E3DA94E4CCF9D1F4 /* UMXTools.cpp */; }; - 06EA5B757204BF16BB26CFAA /* UMXTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC3B01D6AAA721513FBD832 /* UMXTools.h */; }; - 06288CA0F2D0F3CF1B670F4F /* UpgradeModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5C7AFC7612D434EEA05E526 /* UpgradeModule.cpp */; }; - 592F50D9C594E35F4E6D8538 /* WAVTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08381BBCF489F2ABDDA82FBC /* WAVTools.cpp */; }; - C099947F2CB4F72075D607B5 /* WAVTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F7A05BD3B61C7B4E4B12DD2 /* WAVTools.h */; }; - 40AD65842C2BB61D152374B5 /* WindowedFIR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FFD15809B177921E43989B5 /* WindowedFIR.cpp */; }; - FEBC9329EACF938293B9706F /* WindowedFIR.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F2488FE2810A7AEB7DEB91 /* WindowedFIR.h */; }; - 4F15E1953B7DA763A4E8BB79 /* XMTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EE81FA5CAAC1E9593124F5F /* XMTools.cpp */; }; - F6B9610DE23655500BB45564 /* XMTools.h in Headers */ = {isa = PBXBuildFile; fileRef = E5744324512EAECEDA8DC8A8 /* XMTools.h */; }; - 1AA1D44B860668D20FDF09AB /* load_j2b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 294D3010159F0700FEBD4410 /* load_j2b.cpp */; }; - B2726EB61E8F60A7E766CD14 /* mod_specifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 814AC2DA6DF3290A96894589 /* mod_specifications.cpp */; }; - D0CFE94D3CE191F4C5322434 /* mod_specifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E5A74DF462F8E6DD5AB67E /* mod_specifications.h */; }; - 99845C8105F55EFACE13D982 /* modcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08812CFDF4FD1F401D7B2054 /* modcommand.cpp */; }; - 805705E0ECBC986675953A3F /* modcommand.h in Headers */ = {isa = PBXBuildFile; fileRef = CFEBF58EBB3DCD7EA45C0A8F /* modcommand.h */; }; - 42C586B82E43D751173B95E9 /* modsmp_ctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F18BC5CD5DA6286FA6C83803 /* modsmp_ctrl.cpp */; }; - 29427C3515557C8EBE3E597B /* modsmp_ctrl.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E8E1922478A37D2D748495 /* modsmp_ctrl.h */; }; - EA7FD4C15644D3B11FAA037C /* opal.h in Headers */ = {isa = PBXBuildFile; fileRef = E266E428CEB7CF6AF71BBE2C /* opal.h */; }; - 791105846579CB51CEE4DF67 /* pattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4822C14EB4E6BF3E7D4CF008 /* pattern.cpp */; }; - A0A3247F8C2018C2B59D18D6 /* pattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2C9921BBE503CC44451EA6 /* pattern.h */; }; - 00695BFF6C7A03A6F5CB95E5 /* patternContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F9C3B3D3B1A8CD624124A6E /* patternContainer.cpp */; }; - A7DFD2AB13A62FC85C01BE2A /* patternContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = D68280FDC29580566B7F5D43 /* patternContainer.h */; }; - 468D8E30324D1FD59B6A07E0 /* DigiBoosterEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F527128B6144047C2A1C71E9 /* DigiBoosterEcho.cpp */; }; - 2D8CD3B419611B6842105B64 /* DigiBoosterEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2659D128380178B18993B7 /* DigiBoosterEcho.h */; }; - 00CDEF35EC0B9AB1958E76E3 /* LFOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2F0089A19B3BE964A43066F4 /* LFOPlugin.cpp */; }; - E75B72FED3EF67A63CB4C15A /* LFOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = F65E970E62CF99872BEE1310 /* LFOPlugin.h */; }; - 4698029332416AC25BD78541 /* OpCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 35100F5EA175A2E42A4E44BD /* OpCodes.h */; }; - 96964549826B8DFCAB1ACDF8 /* PlugInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85CB2752F1DCCFF87A2E6238 /* PlugInterface.cpp */; }; - FD78D5ECE9220BFCD2F31217 /* PlugInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = CC6D25B5383482D1818F1034 /* PlugInterface.h */; }; - FB8E692BE763B1DE1013F1DA /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CAB0009F36C2A845BF133B85 /* PluginManager.cpp */; }; - 221466A80EBE9BB7F78EA3D2 /* PluginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D13D8A553D04E771865F75D4 /* PluginManager.h */; }; - 915A0E727D2F5625A6DE9521 /* PluginMixBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A066DC7B0C78842295C91662 /* PluginMixBuffer.h */; }; - 3A13EC9426BD21A40F8E29BF /* PluginStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = E96DF64E5534536B9E8FE1CD /* PluginStructs.h */; }; - 286C08F99488FAE95D606757 /* SymMODEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3702474223ABAE714C41CAF0 /* SymMODEcho.cpp */; }; - 4F3100A4BB42A84A44943A8A /* SymMODEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E370FFE2AB55F9713AD1D2F /* SymMODEcho.h */; }; - 98386A3B04555C2CCD2CC999 /* Chorus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A748CBA393F132D3BC874E52 /* Chorus.cpp */; }; - 8DF551D2F906FA7882588CB8 /* Chorus.h in Headers */ = {isa = PBXBuildFile; fileRef = AE21EF679A9F3F018397FD98 /* Chorus.h */; }; - 83B3BA15EF25FD3138BA32B6 /* Compressor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 324CF1ED1E8B9B69C70D789B /* Compressor.cpp */; }; - EAB6A15B569E8C515F8C8ECD /* Compressor.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F7C0FD658BB6A5CE4F105A /* Compressor.h */; }; - 29D0281815A570CB3E54B0C7 /* DMOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38FD1854A40EC1FA2D60533A /* DMOPlugin.cpp */; }; - D0316790BCDB9C9FA5ACA4BA /* DMOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = BF96A8892B5D05A674B89308 /* DMOPlugin.h */; }; - 265149CF923834C59B263641 /* DMOUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E6CA3568A0099FEF3C4F2B2 /* DMOUtils.cpp */; }; - 4D174311B9333502820BA26F /* DMOUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CE2CB18288B334851214FC7 /* DMOUtils.h */; }; - 2808B687947AF8A3DD0E2E28 /* Distortion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B7E54627A324F1A24CA7CDD4 /* Distortion.cpp */; }; - 4F9E05E5BB85F0DAC473F256 /* Distortion.h in Headers */ = {isa = PBXBuildFile; fileRef = BE6B682FAAFF5DD713C4B78B /* Distortion.h */; }; - 7C697F89E87A273071CCB96F /* Echo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B5F02E737DD528020D51018 /* Echo.cpp */; }; - DA491E2D46107B498F6B09AC /* Echo.h in Headers */ = {isa = PBXBuildFile; fileRef = D256821FBE69827867535F65 /* Echo.h */; }; - 57AF309E435966AD2C2A6EC8 /* Flanger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6C3D4E8528A31059BE5BF67 /* Flanger.cpp */; }; - FE046BA8EA43152493C6F155 /* Flanger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DC18303D9FCE3C6E2F16056 /* Flanger.h */; }; - 8E12E12CFA2ED31DC306408B /* Gargle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD90FE0BC939663BF2CF81BA /* Gargle.cpp */; }; - 35069074A117381B2A69CA5A /* Gargle.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E42623506277BC395A3554 /* Gargle.h */; }; - 9BC4A6C78784376CF0A11F77 /* I3DL2Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3F92A725F161D6328EE89D0 /* I3DL2Reverb.cpp */; }; - 42EA5B482EBFA3FB576EE3F7 /* I3DL2Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = B12324271D35CCCDA6865E0D /* I3DL2Reverb.h */; }; - 225607830E003D92F7D044AD /* ParamEq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D13FDA133D0637308661C592 /* ParamEq.cpp */; }; - 097D43F5F5BBED709E3ECAA2 /* ParamEq.h in Headers */ = {isa = PBXBuildFile; fileRef = 984693AC0482F36F0D7770FF /* ParamEq.h */; }; - 4BE9706C37A90111A0C6E91B /* WavesReverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAAC944646C986370FA1F3A4 /* WavesReverb.cpp */; }; - C9073F92B5DC8645DE8BC641 /* WavesReverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 612E3B4CCD3FE3F256917532 /* WavesReverb.h */; }; - 4F32CE34BB4C31D6046F416A /* tuning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EBDDAED6AA49CE513F50203 /* tuning.cpp */; }; - B6CEB61B225E78062B5A591E /* tuning.h in Headers */ = {isa = PBXBuildFile; fileRef = C5E1C72CB11DCB961A30E38D /* tuning.h */; }; - 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 */; }; + 8E038C28FA3EECEB0334697B /* ComponentManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDA4225494209F3B2AD1D09 /* ComponentManager.cpp */; }; + BC69F860A8E748FA91DF0692 /* ComponentManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41C930DD0998650F9168764 /* ComponentManager.h */; }; + 18DB9399045887DC2DD587F0 /* Endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = A78448B4133EB35E9C9DCD38 /* Endianness.h */; }; + 2072C95A0CDA8F287545A43E /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6FE2766FDBA6755FA40CA629 /* FileReader.cpp */; }; + C77E8096B3FB73D9DC7874ED /* FileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = F65ED53C621840E7EB775AC1 /* FileReader.h */; }; + AA1F483A1685DBC09F5D7D99 /* FileReaderFwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 99113C54856313446E825054 /* FileReaderFwd.h */; }; + B5DC4BCE21A14ABEEA067B88 /* FlagSet.h in Headers */ = {isa = PBXBuildFile; fileRef = CD158EA1B96679E3E2CA67A5 /* FlagSet.h */; }; + B31E743B1FAE352628AA163E /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AF67226EEB6A8CD7FD8283 /* Logging.cpp */; }; + DA915990465658800FBC884A /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 89EADC5C753BC89E9E9FB660 /* Logging.h */; }; + F35A82D7DFD7751A0855762E /* Profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2EFC5AF0EA9305A97084B34 /* Profiler.cpp */; }; + 5A7E403546D017252FEF5435 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = E93A381155A98D909E924890 /* Profiler.h */; }; + 941244A4002DA745494FB7D9 /* misc_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98AFA3387F719BE1CFD7B8 /* misc_util.cpp */; }; + FBA1EAD56731ACC0702D8DD8 /* misc_util.h in Headers */ = {isa = PBXBuildFile; fileRef = CA05257BB64128E51F5440DC /* misc_util.h */; }; + F01C233FDC6EFA2EC58D373F /* mptAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = BFE3A15B2B52F7DA743BB2DA /* mptAlloc.h */; }; + 39D55C07A5641EF2AE60FF09 /* mptAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 48BABC2F34F6BF999D08D890 /* mptAssert.h */; }; + A91D0AF015839D769E5B3F4F /* mptBaseMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3894F8C224E6CFB20D050DC3 /* mptBaseMacros.h */; }; + B2582BE19EC0F1AE072C06C5 /* mptBaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = AA70483816354728DF9A77F2 /* mptBaseTypes.h */; }; + B049BDE59CB183B3051D98C9 /* mptBaseUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = FFBF31626B84305234EA601C /* mptBaseUtils.h */; }; + 7922C7B4E53C2A562E5F3AEA /* mptFileIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4893B4B8347A76B0DDCADCCD /* mptFileIO.cpp */; }; + A0742EC60C04F0B01500D1C8 /* mptFileIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F5DFCE53B99FF4FA4AB1747 /* mptFileIO.h */; }; + FD808E2269458D1232ABBDDC /* mptIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC1744E2B8682F24E1CC1DE6 /* mptIO.cpp */; }; + 7BB40E1DE76D79C770CD93A1 /* mptIO.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FEC8CBFC5B6F3A80B3CBF /* mptIO.h */; }; + 355D00B621C5C6838A30DB99 /* mptLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 644C64E5D01063D59976939F /* mptLibrary.cpp */; }; + 9CA0671B881D5B5EB19A5B72 /* mptLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = ABC705E51781708FA0E08A69 /* mptLibrary.h */; }; + C21BBED22EAB7FBD37A760D5 /* mptMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = 3187DC931DC3DFFD86D5F7F4 /* mptMemory.h */; }; + 3E1654242A682B1413876824 /* mptMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D54105FB9C265DE02AC20DE /* mptMutex.h */; }; + 8154385BED18374BB67E6715 /* mptOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 197ED1A205CFBCE42E33ABA6 /* mptOS.cpp */; }; + A8939466144DFF109DAC19EB /* mptOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D71F5F7EC34529E5AC8BAEB0 /* mptOS.h */; }; + D99667B1C5A9670A6E9344F7 /* mptOSException.h in Headers */ = {isa = PBXBuildFile; fileRef = 482B33D7B4BAF4C1BDB6D5D9 /* mptOSException.h */; }; + A9D5FE6B154601E5DE647B6D /* mptPathString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8FFA039E47C947C0DFA9490 /* mptPathString.cpp */; }; + D00C17173C72AA9DC54A4C76 /* mptPathString.h in Headers */ = {isa = PBXBuildFile; fileRef = FFAE7297EB004A87D41F8797 /* mptPathString.h */; }; + A16384AD0D7EE74E56A0F7E2 /* mptRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 39CD38BA25B4FAB1CE0461CF /* mptRandom.cpp */; }; + C84BD96834DB9A533DD77B6B /* mptRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 771B12226357158CCC692D83 /* mptRandom.h */; }; + FBD5325967F095FAB012A68E /* mptString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8D3F737674016B1FC56788 /* mptString.cpp */; }; + A25FB3750EEF746017EB5578 /* mptString.h in Headers */ = {isa = PBXBuildFile; fileRef = 11DF9F29FD1AA393662DBB8A /* mptString.h */; }; + 79B21734E5ED77F7EEE2F486 /* mptStringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 883EBBE474A681B2DD1196C8 /* mptStringBuffer.cpp */; }; + 37FA9A9FA36A9D186C8917A1 /* mptStringBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA2BEADFB1EB2F0249CB204 /* mptStringBuffer.h */; }; + 63C1C45ACFFC241ED8F1A1AD /* mptStringFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32D37ED11E3B459F87A659B5 /* mptStringFormat.cpp */; }; + 8AAA00BFF61A0338BF397DC0 /* mptStringFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 39046168258154AB4EFE54BF /* mptStringFormat.h */; }; + 39F32B1B25717CB40E693A4C /* mptStringParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6877B1BCD491145E1DB424F2 /* mptStringParse.cpp */; }; + A076738B8C8973E4357350D1 /* mptStringParse.h in Headers */ = {isa = PBXBuildFile; fileRef = AF52CB081BE28CF324DE6D0B /* mptStringParse.h */; }; + BF136FE12BA330CC349F11E4 /* mptThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 9798AB1383D4AE7DECE6C674 /* mptThread.h */; }; + 53E63271BF75F45BC871D573 /* mptTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 223343AE0E6F461877815E0F /* mptTime.cpp */; }; + 7AF1819AE6B5808AAF1BB154 /* mptTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 2906C3D61557AE183EBB9CDA /* mptTime.h */; }; + DF3FBEB34BCF7F9E54CB60B6 /* mptUUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E6521581AA124C283B33CB9 /* mptUUID.cpp */; }; + 0678117B723C106B3BA24035 /* mptUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 35451523219600654AFAEE26 /* mptUUID.h */; }; + 47CF92D1330E3D4DDC90197F /* serialization_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B826E652A4A436EC8D9CF483 /* serialization_utils.cpp */; }; + 6E2012F35AB4079BC378614F /* serialization_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D73D10C89E3D38552024E0E /* serialization_utils.h */; }; + 0C5B673E781F662E418596F8 /* stdafx.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B74965A87C5819CB029705E /* stdafx.h */; }; + 6577D28151F4C5C47A71C6D8 /* version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4502D4D600A98F7E969B2D1 /* version.cpp */; }; + 0C1686D9F8675DC9E1869AD9 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B878772E7F5DCF130DF97F1 /* version.h */; }; + 0E624916FA74496FA35E265C /* versionNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 862D8FBAF2BC50A5FBB831BD /* versionNumber.h */; }; + 2DE0589D99505B16626FD59E /* libopenmpt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C50C87508CDBBB8314ABCCC /* libopenmpt.h */; }; + 8F394163FB74A126046A1EB6 /* libopenmpt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FEEF55B5EA571C8353C33099 /* libopenmpt.hpp */; }; + AEB9A2AD1A80FFC963DB8D2C /* libopenmpt_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D3CA7A7694FA700123984ED /* libopenmpt_c.cpp */; }; + A85BAA30949A54AC3D1D31DE /* libopenmpt_config.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C59D9F4301FE624CF67AF2 /* libopenmpt_config.h */; }; + D918B85A452A6001CE7BF240 /* libopenmpt_cxx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88C0EB6B743E3C055D36FA9C /* libopenmpt_cxx.cpp */; }; + BE6B27E92A328405738D1268 /* libopenmpt_ext.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D64E0E37977E03C2261BD29 /* libopenmpt_ext.h */; }; + 603E8FAECC4F375555A1C994 /* libopenmpt_ext.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AF95FC7F9B134D19840B0BB1 /* libopenmpt_ext.hpp */; }; + 0ECD7F4CFAA1C7FF235107FC /* libopenmpt_ext_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD16906969283810F279CA4F /* libopenmpt_ext_impl.cpp */; }; + 95F4201781C968CAAA78A8C6 /* libopenmpt_ext_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 24AEA1AB90BF49521911DC91 /* libopenmpt_ext_impl.hpp */; }; + D9596CF9C59816756E1BF3A6 /* libopenmpt_impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 68E1BAE0D41C1BA4DD119833 /* libopenmpt_impl.cpp */; }; + 6090C4C34CCF6E3FF5514B71 /* libopenmpt_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F271E51FB627E140458FBA3 /* libopenmpt_impl.hpp */; }; + 4DB68EAF3960C4BE2231CCD9 /* libopenmpt_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C197FFB88DFDB17D13A6A7A /* libopenmpt_internal.h */; }; + 56151E22C289B37F8BD3008F /* libopenmpt_stream_callbacks_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A55432B09155C62ABA1D33AF /* libopenmpt_stream_callbacks_buffer.h */; }; + 0810D9F7742EEDC4BDFBF2D6 /* libopenmpt_stream_callbacks_fd.h in Headers */ = {isa = PBXBuildFile; fileRef = 9750BCAA83BB7CB62CD7E11B /* libopenmpt_stream_callbacks_fd.h */; }; + D7C64EEC4330E44ECC7392F9 /* libopenmpt_stream_callbacks_file.h in Headers */ = {isa = PBXBuildFile; fileRef = C6559EA8B22B25A69BD53FF9 /* libopenmpt_stream_callbacks_file.h */; }; + 9535D09C0152C28DCA292FFB /* libopenmpt_version.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F35288709CBAB79932D636 /* libopenmpt_version.h */; }; + 574FF480C3BFF6F98CDE7082 /* AudioSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 061DAD6CF299A0AF1B17A1C3 /* AudioSample.h */; }; + A5E6F1D89163E51BBAE0E52F /* Dither.h in Headers */ = {isa = PBXBuildFile; fileRef = 3438DA2BA0F144D629515FB0 /* Dither.h */; }; + 2E1D01A49A82942A235B3603 /* MixSample.h in Headers */ = {isa = PBXBuildFile; fileRef = A67796EF92C96DDF7BE8AAEF /* MixSample.h */; }; + F1376A46DDCB5FEE4690B9A2 /* MixSampleConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = C00C49BC2C7D4B35F59BC5BD /* MixSampleConvert.h */; }; + 9E1C41878A9A912073924FB8 /* SampleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD938BE39F49B5F8216ACF3 /* SampleBuffer.h */; }; + EF443784DBC2871DC4BA45B5 /* SampleFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4B9FB7EA650259338812ED /* SampleFormat.h */; }; + 1CAB2048088068FB312FA8F7 /* SampleFormatConverters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B74FC5BB785A40240D73642 /* SampleFormatConverters.h */; }; + 85509D0371E492ABDAA8EC5F /* SampleFormatCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D832DC109F42F3AD212AAC2 /* SampleFormatCopy.h */; }; + 94841FAA80D6F69969F533AA /* AGC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03C1D77D6F2F2DFDB818E8FC /* AGC.cpp */; }; + FBA2BAD3E7897CCB90DAE2E8 /* AGC.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8F466AB67255AABF7583E6 /* AGC.h */; }; + F481BB59E0D39249C9F2CF59 /* DSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63E2472DCF509DAC183A58AC /* DSP.cpp */; }; + 5BC8779F47AF3997F0FF9FB4 /* DSP.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD87E2A16BC8D6A1FBFBBA6 /* DSP.h */; }; + 5E123B28CAD63918933C6AE2 /* EQ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADD0B30599219F47C2858D09 /* EQ.cpp */; }; + 058E11A671477C50FAA6962A /* EQ.h in Headers */ = {isa = PBXBuildFile; fileRef = 342C2EE32052F84909987D15 /* EQ.h */; }; + 129C12577EB675F8C7D8858C /* Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 614172B44D2834ACF6789AC9 /* Reverb.cpp */; }; + B9EB3F37257B01222E77E239 /* Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = E810D732D44CDA9C3D5FF293 /* Reverb.h */; }; + 0A8AB00D76719B037F5F9D7F /* AudioCriticalSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0287C6D7EE1ABC7F57DF1534 /* AudioCriticalSection.cpp */; }; + 31C7FE319DE3F02266BB5D90 /* AudioCriticalSection.h in Headers */ = {isa = PBXBuildFile; fileRef = A013DD508CBC4480B55260FF /* AudioCriticalSection.h */; }; + 564BCC1242F433426B8A4FC1 /* AudioReadTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4599282EB1FEBBB43AD75D8D /* AudioReadTarget.h */; }; + 15B050B4011817826A832B98 /* BitReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 642FCC0BD0F3CAFB9959FBC5 /* BitReader.h */; }; + 11B2C3A1FDC4C3FAA6AEA0E7 /* ChunkReader.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C761210C57230C15530424 /* ChunkReader.h */; }; + 613AF4AF4DA2BA7DB60DCF93 /* Container.h in Headers */ = {isa = PBXBuildFile; fileRef = F96BF7C66530F6B62E962681 /* Container.h */; }; + 58F6331CC4BC90380D181F9B /* ContainerMMCMP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E766CB6FD379CBC87C63A8B5 /* ContainerMMCMP.cpp */; }; + C2AB5089AE54B8B8D7EAD337 /* ContainerPP20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3106A8899D6B3B102644DDE8 /* ContainerPP20.cpp */; }; + 3C696864A8A4C827B19945B7 /* ContainerUMX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B5FB83377C77E01E0329317 /* ContainerUMX.cpp */; }; + D7F10A90432D6B534C22E8E2 /* ContainerXPK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 465B516D32C3173B9B2E2C51 /* ContainerXPK.cpp */; }; + 5007568E3C6F1C5CA5DA3072 /* Dlsbank.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71325B6DDDF6595DA65C8A27 /* Dlsbank.cpp */; }; + B73740D4A3B43317CC31342B /* Dlsbank.h in Headers */ = {isa = PBXBuildFile; fileRef = 06163BDD72CFA587FB2EC061 /* Dlsbank.h */; }; + 71B91D3A5D21E407C68CF81D /* Fastmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40EF5A3EACB3592E75198AF8 /* Fastmix.cpp */; }; + 9733C538039958BF8C71FA97 /* FloatMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = 861D6F9C726F468C5B8E839C /* FloatMixer.h */; }; + 08D80A8DF48072BC1D178E3B /* ITCompression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B7EEDD9E23547125AC2C13FE /* ITCompression.cpp */; }; + 0670191FF2ED69B8DBE52750 /* ITCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7AC939EA942CDB33B73C6F /* ITCompression.h */; }; + 022E3BEAEE9501B8570116CE /* ITTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3105D8099DC9D6F9662F07C4 /* ITTools.cpp */; }; + E909E8E6D586DB29FE03DC3D /* ITTools.h in Headers */ = {isa = PBXBuildFile; fileRef = F840982064FA02CBED591DA5 /* ITTools.h */; }; + E1941AF34D7C05E9566A0765 /* InstrumentExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 107FF285FC12E82D65D741E2 /* InstrumentExtensions.cpp */; }; + 4F87BD6DBBA1200F04C430A3 /* IntMixer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EF2A0396AD96231132AC94E /* IntMixer.h */; }; + D787D7D343ED6A5ACCC50C33 /* Load_669.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF543CF79BA613E784C550F7 /* Load_669.cpp */; }; + 08C49551742929D8FD01CBB0 /* Load_amf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5763666743B53D572CD47A67 /* Load_amf.cpp */; }; + 97AF7D4A031511D18CEDB2A9 /* Load_ams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8619EADD726BC1CD5B8AFEDD /* Load_ams.cpp */; }; + C8EE6A563454FEDCBD2CA0B5 /* Load_c67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17D6E5F80328BDE8EC46FAF8 /* Load_c67.cpp */; }; + EDF75E64595DF2EAE23594C3 /* Load_dbm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C5451F608A628E6F1C465F6 /* Load_dbm.cpp */; }; + B03890399C4B909245356D7F /* Load_digi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E8D68A4C54664C375D622D4F /* Load_digi.cpp */; }; + 4CB0770CB8150B9341EEAC6B /* Load_dmf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B954E5B07E7254BF005635B /* Load_dmf.cpp */; }; + 9B8CE70A07F27A9190CA1C6A /* Load_dsm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0AC4B091F6158881DF34C591 /* Load_dsm.cpp */; }; + 16DC72A602EF72FFABD84FEC /* Load_dsym.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 855AF850F1E9B93BFAE59A53 /* Load_dsym.cpp */; }; + 805840A2ECBDD32875967501 /* Load_dtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF4C0C8FBB9EE37EA4BD208F /* Load_dtm.cpp */; }; + 4DFAB739B95F4BC04238ED98 /* Load_far.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65E5D7145137AF043A56EC14 /* Load_far.cpp */; }; + 9D7C0CC309E29F4992BA4122 /* Load_fmt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC2A9D83B87C7473A19BB183 /* Load_fmt.cpp */; }; + 300087E79C651A6E253EBC46 /* Load_gdm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F66EF026BB8C6F254D70303 /* Load_gdm.cpp */; }; + 161E7DCC828310530B5CB22B /* Load_imf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5BC1BD8910EF3C77A2D30D8 /* Load_imf.cpp */; }; + 9988477985F00D47EE5B225D /* Load_it.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 68A5B415D469B3059DCFE3CF /* Load_it.cpp */; }; + 426AF08BAECF831237A825EB /* Load_itp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A48A8BA269A7FAA0FB9BCBA /* Load_itp.cpp */; }; + 749CF6D7E0018A5E69DA2B37 /* Load_mdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 434817612F9AEE5018B92B61 /* Load_mdl.cpp */; }; + 0F0737117B6CCA9704456C70 /* Load_med.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEE598F3EA3770E3D356ADF3 /* Load_med.cpp */; }; + D53337084199CA8ECA716C67 /* Load_mid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 047FB27FF0D0896FD9EFC67F /* Load_mid.cpp */; }; + EC695FDA58CFF260E1A79439 /* Load_mo3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBCA7333A71C4B23903B8833 /* Load_mo3.cpp */; }; + 160E18618273ABE70B4C4DC0 /* Load_mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E37F1FD7A89C8ED63A805FE /* Load_mod.cpp */; }; + 8B31F07CF7968303806F25DC /* Load_mt2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9292D8E6E469C8CF03A7D8 /* Load_mt2.cpp */; }; + C8AE806C341414F3BDECB5CB /* Load_mtm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 179663BA03E83AAAEC0678BA /* Load_mtm.cpp */; }; + 88964437741495D05D0C5368 /* Load_mus_km.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77F9E36EE31347102C3657A4 /* Load_mus_km.cpp */; }; + ACDC9E5E184232E5A11AD4BD /* Load_okt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B85D09E67D7A78E50F6E49E /* Load_okt.cpp */; }; + 80416239ECA6F5BF757F9798 /* Load_plm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B820E91FA472C00F8D91FD1F /* Load_plm.cpp */; }; + 69863CC3D5EBCF495EC47122 /* Load_psm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18E520090437F8F8ED553509 /* Load_psm.cpp */; }; + 0C9B62277800F6AD01D99786 /* Load_ptm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DBC74BAEC719239EB03860AE /* Load_ptm.cpp */; }; + 30B9E7DA9C1E7B6125F71C3A /* Load_s3m.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F7FB83F6BD18F2F54F0CC3F /* Load_s3m.cpp */; }; + 90D49189FC3925108512C7E8 /* Load_sfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFFE6B07CB5043F7B46F8007 /* Load_sfx.cpp */; }; + CC18DF7B387E7202C15614DB /* Load_stm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8438A37B708A7A6B59A9B77B /* Load_stm.cpp */; }; + D1EF273F3D55BBC5C62D5D9E /* Load_stp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 80CD02516C1FDA40553E1751 /* Load_stp.cpp */; }; + 9572CE6281F01EFC6AE8DC93 /* Load_symmod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64D9D395D0F33637191647CB /* Load_symmod.cpp */; }; + 2C2D21CD9892B453216B562C /* Load_uax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB85FE35E7D7D525D0F61236 /* Load_uax.cpp */; }; + 951256050178E98B8A508B64 /* Load_ult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4259BD3B07772C39996AFD3 /* Load_ult.cpp */; }; + A77F529413E5E51A9CBD87F3 /* Load_wav.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F2A39BA6B7C10AA549B4DBA /* Load_wav.cpp */; }; + A05158AD8CB91E7BF5243391 /* Load_xm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEE0A0B7BB209FB44183AC5 /* Load_xm.cpp */; }; + CD2C63F5B9A95638E226574C /* Loaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C053551C8BE9FFB511EBAD5 /* Loaders.h */; }; + 581CDF59C48CE1D28DAB5B5B /* MIDIEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6785B21F5302A6627C7FA676 /* MIDIEvents.cpp */; }; + 7FF3303FEB58C4C57431669E /* MIDIEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4C21795A9EF86843BD3579 /* MIDIEvents.h */; }; + 3ADBE865A64BEBDE6F6A6567 /* MIDIMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7BE6C98A6763BDCD90E0BDE1 /* MIDIMacros.cpp */; }; + E19199CE4DF72C55D6CFCE2D /* MIDIMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E5528D7C372A7D6556678D /* MIDIMacros.h */; }; + EAA3E398D6B6E3F17FA0C0DE /* MPEGFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D9ED4312457D05FD4E79E614 /* MPEGFrame.cpp */; }; + 518EEF623DF6B530A661CA46 /* MPEGFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 20389CD88CFC9AC85562CB92 /* MPEGFrame.h */; }; + 7F229F586B8A6526D4F5793C /* Message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8EF764C7FABB63B7C3219481 /* Message.cpp */; }; + FDD1BB8DE94EAFD012CCAFE4 /* Message.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F89A5281B105FD0A1120D7 /* Message.h */; }; + D787ED4843C34D0C4CB8CA9B /* MixFuncTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4631BEB2329984809B049996 /* MixFuncTable.cpp */; }; + BE4BEBBB2ABCED34F3DA67BD /* MixFuncTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DFD03CEF979F71022F7F724 /* MixFuncTable.h */; }; + A3253E4E8F77153E7896524E /* Mixer.h in Headers */ = {isa = PBXBuildFile; fileRef = B2BCAA171E2B00976714BB96 /* Mixer.h */; }; + D669200642A580C94B9AFD58 /* MixerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = E517CDE1D17F93AF3AEBA7C5 /* MixerInterface.h */; }; + 463FA478B2AFA6F17BCE207A /* MixerLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE848B1DAA017F60D37E7F74 /* MixerLoops.cpp */; }; + ED82D4E659E8676DE2C00946 /* MixerLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CFF639B08513B8BF16F789B /* MixerLoops.h */; }; + 4EB71B563A60838563F69E04 /* MixerSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DAAAE58A90F42DF32E8E3B7 /* MixerSettings.cpp */; }; + B529BB21A1A70BBB8A9FC952 /* MixerSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 849C09A3F0B66C4439D97CD8 /* MixerSettings.h */; }; + 1580394E81F03BC74A0FB64F /* ModChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 045F6388F0DB56CB195957DF /* ModChannel.cpp */; }; + 737FFC6DDFE48FF468BD31CD /* ModChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = CB1AA5B1B76C7CA1A08BB9B1 /* ModChannel.h */; }; + 50F162093C9ACA386530E6B7 /* ModInstrument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FF1AA70A6B803A91F458DC69 /* ModInstrument.cpp */; }; + 37FB876E2379D8070C71969F /* ModInstrument.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F44A3F320FAEE07B31BE74 /* ModInstrument.h */; }; + 1D86FD170999FD70B282DA5D /* ModSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CE4D72698739911A16F7A29 /* ModSample.cpp */; }; + C447B519B0AF7BE7191B90FD /* ModSample.h in Headers */ = {isa = PBXBuildFile; fileRef = B37D08211F420711E8A737DB /* ModSample.h */; }; + 58980C8644165D1F2D0E1BB7 /* ModSampleCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 90A75BB3FCC1BE5445E4CEE8 /* ModSampleCopy.h */; }; + D165DFACBDE32F46A6DBEDDD /* ModSequence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20D734048CF197A5D513A839 /* ModSequence.cpp */; }; + F872C5B2E485C50B8D6FA2F8 /* ModSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = 279C5659932B18449C27F95B /* ModSequence.h */; }; + 4707EC653359C3551C780066 /* OPL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D60758F44276AD738B5F6873 /* OPL.cpp */; }; + EEDC10E1DAC3D2D8831439F6 /* OPL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D055134C9E85F74D2EB8DB0 /* OPL.h */; }; + A01C99AD8C2F9906351976F3 /* OggStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D88489B544144BA04D102CB8 /* OggStream.cpp */; }; + 8761638B73C92959DC343E6F /* OggStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B13BD202763AC2CBDB6A8C /* OggStream.h */; }; + 4EAA73AC3A2767EF63A46703 /* Paula.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DCE6F7FA987DA2932E7F403 /* Paula.cpp */; }; + B57A3B41A1CC12318AEB4F41 /* Paula.h in Headers */ = {isa = PBXBuildFile; fileRef = 841E48B2F08C9D3139765831 /* Paula.h */; }; + AFFDAB839B65725104D18667 /* Resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = BE1400C42AD9FEB3F33E2F7E /* Resampler.h */; }; + 2063983B8CD39AB455F2143D /* RowVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5858A90E44D59C516D529D65 /* RowVisitor.cpp */; }; + 47E8D992B34D6D193C260FF2 /* RowVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3624E46B2276BB5B0B95F86B /* RowVisitor.h */; }; + 409D1EACAC02B23235DB530B /* S3MTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F99FC9A7BEBD38A640A119B /* S3MTools.cpp */; }; + E7615034537CB3D59C9EC369 /* S3MTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CE421702B5040FAB056B2C /* S3MTools.h */; }; + 113B8D15FDCE82BD6693DC71 /* SampleFormatBRR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E09B95BF4C0C9838152B12C1 /* SampleFormatBRR.cpp */; }; + 5AB2FDC9C6C3A5704F1538B0 /* SampleFormatFLAC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5289B72D3E0708C727FFC55E /* SampleFormatFLAC.cpp */; }; + 9637427A82CB3722EB8F91D6 /* SampleFormatMP3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 457124B5B1E1262E7A00A1B6 /* SampleFormatMP3.cpp */; }; + 7F4D102F6B23972C54CDB17F /* SampleFormatMediaFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E1850967A8A92B2C31EC836 /* SampleFormatMediaFoundation.cpp */; }; + D18E9AC13DA04268C6F1D4A7 /* SampleFormatOpus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 809B76856C19C71E551185B6 /* SampleFormatOpus.cpp */; }; + BF9261DBAB26578314EBB037 /* SampleFormatSFZ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEEE1AF83A5F1D71037E97F9 /* SampleFormatSFZ.cpp */; }; + 7A37F5A1E653E792AF2B5400 /* SampleFormatVorbis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72F466285E9DCE578733EAD6 /* SampleFormatVorbis.cpp */; }; + DAD9920DC682FA3CEF1816BC /* SampleFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4905B7C9B56A4A503E43EC28 /* SampleFormats.cpp */; }; + D8487DCD44AE1054CD86B22C /* SampleIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27A6836F13F85A5FFC16986F /* SampleIO.cpp */; }; + 7F475F96EB61C2373484D2CB /* SampleIO.h in Headers */ = {isa = PBXBuildFile; fileRef = AED4EDD49ABBAFCC430C16EA /* SampleIO.h */; }; + AD9ABDDA19B5207C62D73010 /* Snd_defs.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF3716B08DA3363B12A9A80 /* Snd_defs.h */; }; + 6552F40C51BABADABA25CFF0 /* Snd_flt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D71C386E935C276B29BF240 /* Snd_flt.cpp */; }; + 3FB1AD0FABCB10B1F4ED2045 /* Snd_fx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E26634B5A0D2543035E8B60 /* Snd_fx.cpp */; }; + 8411D42170799AEFD9E4AE05 /* Sndfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 732F922ADFF3901AA859C1E4 /* Sndfile.cpp */; }; + EB248E1CD7A1815F001F8273 /* Sndfile.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF2DE1426AC49BFAF0B6499 /* Sndfile.h */; }; + B64A62092265C5AA6B87D53E /* Sndmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85392DCF7120EFC61A7155E4 /* Sndmix.cpp */; }; + 088467B4F42D9DC3DDFEA4DE /* SoundFilePlayConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A91DFCF615E458135E3FE775 /* SoundFilePlayConfig.cpp */; }; + 6FF9D2045B387D8004BB59B2 /* SoundFilePlayConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEBE378AA26443CB31BC1CB /* SoundFilePlayConfig.h */; }; + D277A8AE3E920B5087B41BE4 /* Tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21C53F500DAC0148B6FC6765 /* Tables.cpp */; }; + 79D72BA4E566ED8EEE62CEA6 /* Tables.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4F0A194E0F30BFDF20B03 /* Tables.h */; }; + 5CF48166485C4834B1C75C4A /* Tagging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BEBF812B7AFF702801528CD /* Tagging.cpp */; }; + 9A88161A86050A5DAF820A71 /* Tagging.h in Headers */ = {isa = PBXBuildFile; fileRef = 92D834D0FE919F7A87F1B954 /* Tagging.h */; }; + FAAFAE98E61775664F83897C /* TinyFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 296C1CDD95301BCD5E964B97 /* TinyFFT.cpp */; }; + E1AD225CCD2A169FF6A716B3 /* TinyFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = F08926175C4391C1E5A2AB9B /* TinyFFT.h */; }; + A5E66D91114C01189A24A3F0 /* UMXTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D42F6A6DC081415DA9A07E6D /* UMXTools.cpp */; }; + 0C0E04DE7828677FC14A7713 /* UMXTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0F5CBE07F61DB6B04684D3 /* UMXTools.h */; }; + 23C7C81E0F70304E38064CCD /* UpgradeModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B05F1FAE76A84817043265A /* UpgradeModule.cpp */; }; + 56A858D9C20DEC5F4BE68D38 /* WAVTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5DEC734D1309F24BA4FDC34 /* WAVTools.cpp */; }; + 7DAF40A4E9C9A34532ECB3D9 /* WAVTools.h in Headers */ = {isa = PBXBuildFile; fileRef = ECC5B05DD8AC725581FDD872 /* WAVTools.h */; }; + 1DE1C529095F16C3F256D45A /* WindowedFIR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC12C2A4582D2546A14F35DA /* WindowedFIR.cpp */; }; + 44ABFCC430BEFC1DD9A7D90A /* WindowedFIR.h in Headers */ = {isa = PBXBuildFile; fileRef = F3748A1D5F044C0868002D20 /* WindowedFIR.h */; }; + ACE20F50984AD61D01B6EA33 /* XMTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64F93AC4D0BD39B499236A7E /* XMTools.cpp */; }; + 138CD363FF08C7A62886C7BA /* XMTools.h in Headers */ = {isa = PBXBuildFile; fileRef = E240B5764EFA1F21D7593AFB /* XMTools.h */; }; + 171ADD4B837F70D20C5812AB /* load_j2b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 06F4DC88F245B478DB64F188 /* load_j2b.cpp */; }; + EF0B0CA25B28FE9224006B00 /* mod_specifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EE9FE588A926688B3288207 /* mod_specifications.cpp */; }; + 56333BD2C244E3784B9675B8 /* mod_specifications.h in Headers */ = {isa = PBXBuildFile; fileRef = E51808F3D196588CBA8E1624 /* mod_specifications.h */; }; + D63067A542A1691E0BC0E3A6 /* modcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E3CBD933AB9B0D66336B1EA /* modcommand.cpp */; }; + 7DD00DE0E935A166720E433F /* modcommand.h in Headers */ = {isa = PBXBuildFile; fileRef = AC92A20798E479F78103B707 /* modcommand.h */; }; + 1FF9E65D0B7737F7F46EF58E /* modsmp_ctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEA171F21ABCD49363DEE427 /* modsmp_ctrl.cpp */; }; + C6DA9336B2ED938F5BD7707C /* modsmp_ctrl.h in Headers */ = {isa = PBXBuildFile; fileRef = 356B2321A1FAE40BAAF6C523 /* modsmp_ctrl.h */; }; + F090EFE05C55EED025BB1E9B /* opal.h in Headers */ = {isa = PBXBuildFile; fileRef = FF6B08FBEBBCF33C1421E2FE /* opal.h */; }; + D6DE333EC246FA0B2BB20E22 /* pattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E33DC6DBAF7DA5D835D0B28 /* pattern.cpp */; }; + BD7596D5A9F28918D26F8A2C /* pattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CF80A74B8B1751E411190F8 /* pattern.h */; }; + FD8E57FB69A0FFA1F2F191E1 /* patternContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CD09BE2184EEC7B0146AA13 /* patternContainer.cpp */; }; + 6462A3F1D028000E19848E70 /* patternContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 731B98FE5F2E985708187544 /* patternContainer.h */; }; + 0CFE87AFF8BD185461DB005F /* DigiBoosterEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB844A6967A13C5A3079A9C7 /* DigiBoosterEcho.cpp */; }; + 4AF8572B36CD9FDE5F7CDFDA /* DigiBoosterEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = B94C55CD255EFD73AEAF8FB3 /* DigiBoosterEcho.h */; }; + 9DB270B189F11A2D3274F75E /* LFOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ACAFEFF218EB4FB621E0CC45 /* LFOPlugin.cpp */; }; + 443653FE30CA48A6998EA25A /* LFOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 330BA2329F7BA4AB689A1E34 /* LFOPlugin.h */; }; + 63373F114FE0A6407876C2BF /* OpCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3289175E9EEEAAE427C74CBD /* OpCodes.h */; }; + DC1D804FC8F2C702F1A107FF /* PlugInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B2F79D67740217D0092B3BC /* PlugInterface.cpp */; }; + DA39264CC6E35B5BAFB46376 /* PlugInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 89F0F5FAF5B652173E12E179 /* PlugInterface.h */; }; + 18FBEDA104D035552D7F7551 /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C7D6FC9A33E8A441BC393781 /* PluginManager.cpp */; }; + FFD4B607EB7EEC16D44FF431 /* PluginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EC05A9BFA86B7B743E2451A /* PluginManager.h */; }; + AEC692E89A9BDA9BC34A1A98 /* PluginMixBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D8CD877099E801E92EF125E /* PluginMixBuffer.h */; }; + 0011303AECBA6549D58B6D64 /* PluginStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = EF376D1A5BFEC936A4595899 /* PluginStructs.h */; }; + 6505A6E4D12198D59AF90443 /* SymMODEcho.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54A183C0404AEBEF69E0066F /* SymMODEcho.cpp */; }; + 4C57FC9FB868A44641BA3686 /* SymMODEcho.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6B6FA307E9BF3CF0E07DD4 /* SymMODEcho.h */; }; + D5D1072741EEF9170AC66685 /* Chorus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4E70722B0906F51D9268BD0 /* Chorus.cpp */; }; + BC47A0E928594890B1AADACF /* Chorus.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B554F0D77D39FA660CB5D3E /* Chorus.h */; }; + A92C76B2159FB8CE5E33EE52 /* Compressor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E409EF2D23B46AD6A5909C /* Compressor.cpp */; }; + 90AEC034FC95AB2A0584ADA6 /* Compressor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F0FF7854BA3EC2DB46746E2 /* Compressor.h */; }; + 8FBC26157B916EC8A440AEC4 /* DMOPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE1112E34A23BA89D3744CC9 /* DMOPlugin.cpp */; }; + B6CC12F4A27648038B47501E /* DMOPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = E549E809511045269A6BD388 /* DMOPlugin.h */; }; + D522C3AC410AAEA24AF8AF1E /* DMOUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8484D9DE7018CF86D9DC283B /* DMOUtils.cpp */; }; + 8AB0E0FCF6CCD2EDBFA43F5B /* DMOUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CBCA9485B773FCB4E0091834 /* DMOUtils.h */; }; + E5F7C7CE516A0AEB9AFE3F6F /* Distortion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54CBC7A2400A721EE98C4E50 /* Distortion.cpp */; }; + CC7A6E2E3862592441505BA0 /* Distortion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B46492F07DA3ED7709E988B /* Distortion.h */; }; + 798F7B85E5A0232C6EF2B56B /* Echo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2893628C1411B325FD0871BD /* Echo.cpp */; }; + E01395F84CDAF11495358077 /* Echo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FEF99205B029A7904EC7666 /* Echo.h */; }; + 347081FD201AB70C09EBBE27 /* Flanger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC8D4BB45854A8D0A1AF3633 /* Flanger.cpp */; }; + 9BEAEB238729969F30AC72D1 /* Flanger.h in Headers */ = {isa = PBXBuildFile; fileRef = EA70EA5456AC4A185FA1C7A7 /* Flanger.h */; }; + CBAB7E1837C8700900A0DD76 /* Gargle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA2F3B8AE6D8A2B90F6FBE38 /* Gargle.cpp */; }; + 322C8C709E3D3417278FC656 /* Gargle.h in Headers */ = {isa = PBXBuildFile; fileRef = 411887C82D96D761168E95F9 /* Gargle.h */; }; + 6135A0464DF530EBB61219F6 /* I3DL2Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3093C85D9CAFBA4E658727BC /* I3DL2Reverb.cpp */; }; + 5F56E0BE4B2B287274DA676E /* I3DL2Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 378775ABA3981D522CEAAF91 /* I3DL2Reverb.h */; }; + FF1658E2EBC08DF1D491950C /* ParamEq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8EC2AA59FA88077643E495D8 /* ParamEq.cpp */; }; + A662C47092A16EEC3B244B1E /* ParamEq.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F6F9FD81315AC18A26D750 /* ParamEq.h */; }; + A8D0C0959490513AFDAD3945 /* WavesReverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17463232836224234C3A9190 /* WavesReverb.cpp */; }; + 0F8F7998FB63C14B24130148 /* WavesReverb.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E543748CA65DFEE53B7712E /* WavesReverb.h */; }; + 0C487A597862DDFAC184ED8E /* tuning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4C5B491B0AC768959FDDCA6 /* tuning.cpp */; }; + 3351F8A99FE0B994A8DC9AAC /* tuning.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A201180EDE048277F01C79 /* tuning.h */; }; + 7C8C934CE89D3BF371EFCD32 /* tuningCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BA23431372085CA20184362 /* tuningCollection.cpp */; }; + 325045779EB5D8FD278E7AD6 /* tuningbase.h in Headers */ = {isa = PBXBuildFile; fileRef = 412D19EF2D7FF0DE169E2DEF /* tuningbase.h */; }; + 05D9DB19719F3836BAFAC698 /* tuningcollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 74A9B22760BCB28009A68F6D /* tuningcollection.h */; }; + B9B4B1A7A55D19D7CEF33456 /* algorithm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C8D83AE1343ECE67BD167040 /* algorithm.hpp */; }; + DF104CF8CB234C51740D293E /* alloc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AE2D12DB1ABDD3C523B9B4DD /* alloc.hpp */; }; + 7D8AC8E0E971B3D6F25FB552 /* arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2C83CD5C1817C30481DB1CB9 /* arithmetic_shift.hpp */; }; + F75AC333E36DC38C8C57A079 /* array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C6C8B4D9325876C43B5457DC /* array.hpp */; }; + F09F01D0DC07C89D4573DCB3 /* bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5F0AC635CBCEC4259434F5EF /* bit.hpp */; }; + B586C6B721A3B8A8EA7A2516 /* check_platform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A410AA6490B91194B94F2D13 /* check_platform.hpp */; }; + 82A986F96E69179ED786FFA8 /* compiletime_warning.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B1AEFC671DCBEE58E6A25BC6 /* compiletime_warning.hpp */; }; + 308EB6EE1C38ECFD0509F418 /* constexpr_throw.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1FB774638B7DD17FD4D85FE2 /* constexpr_throw.hpp */; }; + D2FFE1473E70E4C0078F5E49 /* detect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A1D4208A8D5114CDB6CE14E1 /* detect.hpp */; }; + 255A60701104967FFAD49D9A /* detect_compiler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4F56CD960BCC9F5A9175858 /* detect_compiler.hpp */; }; + 26D64D23126A43CB7B2E9D7F /* detect_libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D5B53E0F412641880A45BB10 /* detect_libc.hpp */; }; + 986A5C1B84A906972D2CE3C8 /* detect_libcxx.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C7BE1EAB33FA7E6E3CEFFBFD /* detect_libcxx.hpp */; }; + D2CAC424BE732C54E70948D3 /* detect_os.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 417B383AADE0CBC036B96D99 /* detect_os.hpp */; }; + D129BB35BD6865B166EB41E3 /* detect_quirks.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 60D6116ACC11722DD506EFBC /* detect_quirks.hpp */; }; + 91A925397DE8CFB4266BACE6 /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 207E3D6D8CB99D3095AE1AC0 /* floatingpoint.hpp */; }; + 43FC3D1F2F7A8EB818724C50 /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 521EADD8BE38107A075B200E /* integer.hpp */; }; + 5C593294C8C9340D91E8AE95 /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EB8F06BED70CFA00008AFA14 /* macros.hpp */; }; + 43223305AF87C68B38606864 /* math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B230D6779E82AD6787A1EA77 /* math.hpp */; }; + 54AB36CCC01B3945893AB3CD /* memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3C619D9CF430D1CF8C00D30 /* memory.hpp */; }; + 81C007366D696F6596FF8AE4 /* namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 90676081FCCCF30785A595E0 /* namespace.hpp */; }; + 89F2A3707570F4095E68B2A1 /* numeric.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D890886444ABEB058DCDFB99 /* numeric.hpp */; }; + 39E70BA325655C3C0E5D1AD4 /* pointer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 88D7487BF4F1AB1C3D14BCB0 /* pointer.hpp */; }; + 6149B98CCD5A613356ACF372 /* preprocessor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 107C4246FCF992DFE5F15077 /* preprocessor.hpp */; }; + AFD357709B1202EC4495DE1D /* saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7E5D27C1EA988784F38D0414 /* saturate_cast.hpp */; }; + 85EB3CADF1072F9EBADF9B0B /* saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74338A1960DCF14889720DC8 /* saturate_round.hpp */; }; + FE3626F86AA7287133C6A2F9 /* secure.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4DE0AE57395DA29A62DAA2AE /* secure.hpp */; }; + 92A49466FE8B7F5C077A81D8 /* semantic_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 21BC96400D508CE87614E69C /* semantic_version.hpp */; }; + E4C2DBE6D06C11F6B93D1911 /* source_location.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 532BE545BFF14162084DD0C4 /* source_location.hpp */; }; + AFB21E5A1B18B2E0A4F053B9 /* span.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9ECD7E188A1F5608733E9318 /* span.hpp */; }; + E3915D8FCFBEA9C0F89F4CD1 /* tests_base_arithmetic_shift.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B220E66A1E8A7BCDA7CD2978 /* tests_base_arithmetic_shift.hpp */; }; + 3DCE4581A98BEEB73256DA1F /* tests_base_bit.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6C1695ED58C0CAFC4191D217 /* tests_base_bit.hpp */; }; + 6AB8671D56232829FF3E8D8E /* tests_base_math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 59102DB7C5F717ADCEE51929 /* tests_base_math.hpp */; }; + 15A1BB5F811551BD4A5F9ECC /* tests_base_saturate_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 04CD2A2AF0CDBEA419962B29 /* tests_base_saturate_cast.hpp */; }; + CB360959B7384D69A0BB4362 /* tests_base_saturate_round.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23EA70F68F0885C3D8D58AD5 /* tests_base_saturate_round.hpp */; }; + 592571B0C56435C9CE44FCE0 /* tests_base_wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8802D44F74EE6BBFDD642B12 /* tests_base_wrapping_divide.hpp */; }; + A5C73B0691458C9F7A3D4A37 /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74C443CAE0DEA66B2901B7FF /* utility.hpp */; }; + F9CBEFB0E549404ACE41FEE1 /* version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 48C43AE9B4DE9D8AFD00AE1E /* version.hpp */; }; + 51C609273D703F3626414751 /* wrapping_divide.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0160B270CDD67435538F6A5 /* wrapping_divide.hpp */; }; + 3E119FFAAA4CFFBDB3417C4D /* base64.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D7EC34B39E68919A2519E2F /* base64.hpp */; }; + 53E2A2D93F769881A83AF235 /* base64url.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E23113E34EA2155C17C18FE4 /* base64url.hpp */; }; + A2CFADFF8EE2AD5837CC8A45 /* hex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 91E6DDC4FD759FAF067280C7 /* hex.hpp */; }; + B9BD03EE257BAC24AE45988C /* tests_binary.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 686844B754127AC63DE381E1 /* tests_binary.hpp */; }; + EDBC5076D9CF50CF82B92DBC /* libc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC98C9E068288BCB71246CE3 /* libc.hpp */; }; + AB7ABF3F17E052C6A0B8F49E /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1AA8475B06FA1E4BEF185C5B /* mfc.hpp */; }; + 829E8753EED9E716F7CE64A6 /* windows.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 11B1C905FD1890D36684A4E9 /* windows.hpp */; }; + 2CEF2122980985C3E12B9557 /* crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BBCE0F827A3A2F0D0F3080E /* crc.hpp */; }; + FA426104665F53F52F37C062 /* tests_crc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9CDD777B5763FA7DE0C5B26 /* tests_crc.hpp */; }; + 69B5D4375549CADFBE0D2494 /* exception.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 383FD9F9A4AFDB726DCE55FB /* exception.hpp */; }; + E0F5C6F24C66C96B158543F4 /* hash.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EF49E2F2DBC6D5350444D649 /* hash.hpp */; }; + 8ABC0B0C76CF0B651FB9E851 /* jwk.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7922327FE5B1F369EEADD481 /* jwk.hpp */; }; + CDEE566A39ACFFA0C276EB08 /* tests_crypto.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC9CBB2BE846F13AD117F955 /* tests_crypto.hpp */; }; + A9C187FD95D487563EBE6443 /* mfc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 38B85F9EA4472189AD4302A1 /* mfc.hpp */; }; + E968692ED5129F3DBEE3A658 /* nlohmann_json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 38BA5C18A480B934EDDB4797 /* nlohmann_json.hpp */; }; + CC3FEC35B8E92145A1BA2960 /* floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BF71195A7BD6EB1F018FD13 /* floatingpoint.hpp */; }; + 9548A79B81F10ECBAA872A4A /* integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 249351A190F8E42719D18600 /* integer.hpp */; }; + 4A97FD19B661CF74FF67CE99 /* tests_endian_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 99950A86852C4D3B2EE1C33B /* tests_endian_floatingpoint.hpp */; }; + 7CE82599E851BBFB719569A6 /* tests_endian_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4B9CFB3337728231201C9D84 /* tests_endian_integer.hpp */; }; + 4AC6CFE5B6381202FFCC4786 /* environment.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 99C6469B8505F1162E88CD48 /* environment.hpp */; }; + 20123C968CA59D44958C0DFB /* exception_text.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EF07816EDBC7111344E5F91D /* exception_text.hpp */; }; + 28F3E6D714C96DD5FD728828 /* default_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1750259C83C267B8CC569D3C /* default_floatingpoint.hpp */; }; + A0B867458C78F8E9F595E0F4 /* default_formatter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0F5372197B6F640A4447D177 /* default_formatter.hpp */; }; + 9CFDBFAF88D20763B181475F /* default_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB369E23374846CAC099D809 /* default_integer.hpp */; }; + 1E8B6E898A72597F93605BFB /* default_string.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2D5B373F19EF2CE782B3869B /* default_string.hpp */; }; + F828633CE4D1CA6B0D68E6EA /* helpers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7E993BB134F27429C27C91A /* helpers.hpp */; }; + ECBDC71CD8662F4C01FD4ACB /* message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B96D63C87FB69C310D40B9C /* message.hpp */; }; + 32497A339E306529A71E67A5 /* message_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C1FC9ACBAD9090731655EA27 /* message_macros.hpp */; }; + D524DC3C41603C004A55B98F /* simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 84373932709FFFFFD90A1416 /* simple.hpp */; }; + 4B857B34B74D49B880DE51CA /* simple_floatingpoint.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7A680999663D514C8FEC9048 /* simple_floatingpoint.hpp */; }; + BD36BEB8291EA9AE320CAB2A /* simple_integer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6C873621581B2CC9C1DF857D /* simple_integer.hpp */; }; + 5C579C6C489646E8F118231A /* simple_spec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0BA1026A77DC622D80D1DFBC /* simple_spec.hpp */; }; + 4C05229AB86EB7FC41B265A7 /* tests_format_message.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B77EE03074D7501F0F68F54 /* tests_format_message.hpp */; }; + C15AC10EAD46597E16BD18D1 /* tests_format_simple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 421E02E0AEE6CF637777D875 /* tests_format_simple.hpp */; }; + 49655B45B5CAEECB3EA390A4 /* json.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F8F7E0CBE449B8BBCD68F5CB /* json.hpp */; }; + 7E860F1EEAF61197B3158C1F /* mutex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CD7F285BB9FC1B9EE2791CB2 /* mutex.hpp */; }; + 79CA8ED2659FD6858E4E1682 /* windows_version.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8845F536F4569DDD7DA82F1D /* windows_version.hpp */; }; + 5DE07DCEC9A84B5292395464 /* out_of_memory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C10F0FB38E537AF619477AB /* out_of_memory.hpp */; }; + EE7AD6F85AEBD871230A53FA /* parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DEE388F296B2CD252E82CE6 /* parse.hpp */; }; + 85BF1A7DF1315D993AC6921D /* tests_parse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F44EB7FAE08D617689103EA8 /* tests_parse.hpp */; }; + 1E9317690A116802F308269A /* crand.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D400B14B95A6EB5027D7E49 /* crand.hpp */; }; + A5308DFB9105D5AEBAB414AB /* default_engines.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 34206415A0310CBC29839EFB /* default_engines.hpp */; }; + 2A39D1AD967431719F69AE00 /* device.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B902D65EA56A9C2C0ED6B042 /* device.hpp */; }; + D2659B893EA1FB4C479678DC /* engine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 61A63F304D0E06FEB6791A14 /* engine.hpp */; }; + E911E37455238B1BDE741D5B /* engine_lcg.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 98CF021D844D53B66D45114E /* engine_lcg.hpp */; }; + 385A8438A495E4FBAD8A618B /* random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 07C31E48F32AE5155C96F92B /* random.hpp */; }; + FAB23068662333E12F42AD69 /* seed.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9EE001BB56BF45DDEE8F471 /* seed.hpp */; }; + 51D31201BD90BB37465BA79F /* tests_random.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 009F1149EC484758D5194F73 /* tests_random.hpp */; }; + 4FA2EAB4BBDD4A78C4D2C707 /* buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BEE08A50AA48511E13B46534 /* buffer.hpp */; }; + F3D20D26DFBEA595483565E8 /* tests_string_buffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 829CEFD9EE64BD5DB7F5C56F /* tests_string_buffer.hpp */; }; + 0F0D80A57B76150804BAC3B2 /* tests_string_utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FED8A4F7EAAE2BF5D3584648 /* tests_string_utility.hpp */; }; + 68DED220545C23BA3D54E151 /* types.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 57D58DC2C3EFF0630C1201F8 /* types.hpp */; }; + C9B242ACB55BAADBDEF1C55A /* utility.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D8CCA06E443234F5CD0AD6CD /* utility.hpp */; }; + D0441251BC195A04E5C89900 /* convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F2DA6AFEB3E4E567490E095 /* convert.hpp */; }; + B6F02EE922D819DF2BC61B5B /* macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C5E1A3C5B175996D1A3AF321 /* macros.hpp */; }; + 7F71DF39EB864D90744327F1 /* tests_string_convert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6E4685C95A48C9D943CBBFD2 /* tests_string_convert.hpp */; }; + 3C498899A80631D031D11C38 /* system_error.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0BF64FA0F79F85AFE0708DCA /* system_error.hpp */; }; + 7AE4A0CDE64934546F22D62C /* test.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 89F40CFB7546E4EA5E6521FB /* test.hpp */; }; + C0D2EA92AC66E03A152B3AEF /* test_macros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2FEA2ACD9B5A2D466479A7CE /* test_macros.hpp */; }; + DFB567944B1BFB1AD4F39CF3 /* guid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CE121DFCBA64F4EBA38331FC /* guid.hpp */; }; + 7BA0B721E787A217F075A493 /* tests_uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D392487ABF263E2228EB97D6 /* tests_uuid.hpp */; }; + 49E2B09EB54744253E20E6FD /* uuid.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F854942DE4A66B1DCDC5A82D /* uuid.hpp */; }; + 59848AF2C599F8484E56D2A9 /* tests_uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08A98847F4AACC57DD2DC350 /* tests_uuid_namespace.hpp */; }; + 272F42CA93C2A3789CA9132F /* uuid_namespace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9624282C82E4B8D0EB01A1DB /* 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 */; }; @@ -329,275 +425,371 @@ /* Begin PBXFileReference section */ B3EA35381FAF3428E81465F2 /* BuildSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "BuildSettings.h"; path = "BuildSettings.h"; sourceTree = ""; }; - C8BB03B6B40DDBA59D2C18B6 /* CompilerDetect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "CompilerDetect.h"; path = "CompilerDetect.h"; sourceTree = ""; }; - DF79CCBECBE1928C344DA7A2 /* ComponentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ComponentManager.cpp"; path = "ComponentManager.cpp"; sourceTree = ""; }; - 0DE7DDE97901418BC223511F /* ComponentManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ComponentManager.h"; path = "ComponentManager.h"; sourceTree = ""; }; - 29C2B344957B1EEF1EDB38C9 /* Endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Endianness.h"; path = "Endianness.h"; sourceTree = ""; }; - 7188A7C7DD4CA6B7A6B2D681 /* FileReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "FileReader.cpp"; path = "FileReader.cpp"; sourceTree = ""; }; - 789C40CDE455AB776DB5C551 /* FileReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReader.h"; path = "FileReader.h"; sourceTree = ""; }; - DB7781B2C7C958A2B0E895B2 /* FileReaderFwd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReaderFwd.h"; path = "FileReaderFwd.h"; sourceTree = ""; }; - 469D619132EE4CD35B523B95 /* FlagSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FlagSet.h"; path = "FlagSet.h"; sourceTree = ""; }; - C444C007B080C3711993DB68 /* Logging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Logging.cpp"; path = "Logging.cpp"; sourceTree = ""; }; - 4B472BF53798163760FC04F9 /* Logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Logging.h"; path = "Logging.h"; sourceTree = ""; }; - 242D314090E69BEA1946B6C4 /* Profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Profiler.cpp"; path = "Profiler.cpp"; sourceTree = ""; }; - EB2F52B3579EA732A0876232 /* Profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Profiler.h"; path = "Profiler.h"; sourceTree = ""; }; - 45347CD8311B3ED0DA6BA4ED /* misc_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "misc_util.cpp"; path = "misc_util.cpp"; sourceTree = ""; }; - 0C9B7D60F8D680CA61E998C1 /* misc_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "misc_util.h"; path = "misc_util.h"; sourceTree = ""; }; - C1D8BBFD2D47117D7630CC7C /* mptAlloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAlloc.h"; path = "mptAlloc.h"; sourceTree = ""; }; - 8A4F1515768B187FDF9D3076 /* mptAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAssert.h"; path = "mptAssert.h"; sourceTree = ""; }; - 7AFA3D21664C15114F6B5221 /* mptBaseMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseMacros.h"; path = "mptBaseMacros.h"; sourceTree = ""; }; - C38BA8062F50A7F6F8B5D7C0 /* mptBaseTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseTypes.h"; path = "mptBaseTypes.h"; sourceTree = ""; }; - 016662BA6D2A61AA36909174 /* mptBaseUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseUtils.h"; path = "mptBaseUtils.h"; sourceTree = ""; }; - 0FED58597BD0679984D395D5 /* mptCRC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptCRC.h"; path = "mptCRC.h"; sourceTree = ""; }; - 48006EA3B4C46C937D2A9D5D /* mptException.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptException.h"; path = "mptException.h"; sourceTree = ""; }; - 8FBD12C8FBD7756944FA85FD /* mptExceptionText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptExceptionText.h"; path = "mptExceptionText.h"; sourceTree = ""; }; - 87F8F9C673DFBBBE1C3022DC /* mptFileIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptFileIO.cpp"; path = "mptFileIO.cpp"; sourceTree = ""; }; - CE66D9C8BAA2DC3223B5F429 /* mptFileIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptFileIO.h"; path = "mptFileIO.h"; sourceTree = ""; }; - 8BB5029B7706EEDCA06ADC9E /* mptIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptIO.cpp"; path = "mptIO.cpp"; sourceTree = ""; }; - D2C19A61BEE764C8A72DEA93 /* mptIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptIO.h"; path = "mptIO.h"; sourceTree = ""; }; - 6CE42646D8A82536A10E5600 /* mptLibrary.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptLibrary.cpp"; path = "mptLibrary.cpp"; sourceTree = ""; }; - 0A01842376BAEECDFF1909A8 /* mptLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptLibrary.h"; path = "mptLibrary.h"; sourceTree = ""; }; - B090B9769CCCBCE005DFD4D7 /* mptMemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMemory.h"; path = "mptMemory.h"; sourceTree = ""; }; - ECA9A22F5818F8AEA101B3AE /* mptMutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMutex.h"; path = "mptMutex.h"; sourceTree = ""; }; - D81B905BC46C7B9DEDD0695F /* mptOS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptOS.cpp"; path = "mptOS.cpp"; sourceTree = ""; }; - DF3010EFCB56DA55B49C5F21 /* mptOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOS.h"; path = "mptOS.h"; sourceTree = ""; }; - 42EAD35FAEA33E0A370359E4 /* mptOSError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOSError.h"; path = "mptOSError.h"; sourceTree = ""; }; - A92ACF5915BA90441EB6715C /* mptOSException.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOSException.h"; path = "mptOSException.h"; sourceTree = ""; }; - 79EBBC0F6568B0528EE5B066 /* mptPathString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptPathString.cpp"; path = "mptPathString.cpp"; sourceTree = ""; }; - 40C6EBAA2C18C39A153700AB /* mptPathString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptPathString.h"; path = "mptPathString.h"; sourceTree = ""; }; - 3A2051662607135ECF57797B /* mptRandom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptRandom.cpp"; path = "mptRandom.cpp"; sourceTree = ""; }; - 38BA47EA24F64A548D08634B /* mptRandom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptRandom.h"; path = "mptRandom.h"; sourceTree = ""; }; - ABB43B489705278AC069154C /* mptSpan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptSpan.h"; path = "mptSpan.h"; sourceTree = ""; }; - 4DCE2ABD39B5ECB4E20553D2 /* mptString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptString.cpp"; path = "mptString.cpp"; sourceTree = ""; }; - 14132ED7004F314169614938 /* mptString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptString.h"; path = "mptString.h"; sourceTree = ""; }; - 8BC5B2E4772D79B2E0988DC8 /* mptStringBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringBuffer.cpp"; path = "mptStringBuffer.cpp"; sourceTree = ""; }; - 097E1645F5FA09881E780A9C /* mptStringBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringBuffer.h"; path = "mptStringBuffer.h"; sourceTree = ""; }; - 355A76D121C23C9F8A2D51B5 /* mptStringFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringFormat.cpp"; path = "mptStringFormat.cpp"; sourceTree = ""; }; - 7CEEB443686BA88691E8A89A /* mptStringFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringFormat.h"; path = "mptStringFormat.h"; sourceTree = ""; }; - 0BAA820277C4E5A3C0E6F537 /* mptStringParse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringParse.cpp"; path = "mptStringParse.cpp"; sourceTree = ""; }; - 928059B2FE0F1B9D070CFCB4 /* mptStringParse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringParse.h"; path = "mptStringParse.h"; sourceTree = ""; }; - F8E2355B649CA005EDFBBADF /* mptThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptThread.h"; path = "mptThread.h"; sourceTree = ""; }; - 0CC952A87882BD5201E2D72C /* mptTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptTime.cpp"; path = "mptTime.cpp"; sourceTree = ""; }; - 9319403DFF8795BC487150BC /* mptTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptTime.h"; path = "mptTime.h"; sourceTree = ""; }; - 18FB305284B49BFC0D14B6D6 /* mptUUID.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptUUID.cpp"; path = "mptUUID.cpp"; sourceTree = ""; }; - 9F5892890BC7E70854B0A208 /* mptUUID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptUUID.h"; path = "mptUUID.h"; sourceTree = ""; }; - 990A32C5054692880E3B0F18 /* serialization_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "serialization_utils.cpp"; path = "serialization_utils.cpp"; sourceTree = ""; }; - E0C6C6E84C37C961155643EA /* serialization_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "serialization_utils.h"; path = "serialization_utils.h"; sourceTree = ""; }; - 7E6F72886AC05DCA93244C8C /* stdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stdafx.h"; path = "stdafx.h"; sourceTree = ""; }; - F784BBFA633E26A5EC9D407F /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "version.cpp"; path = "version.cpp"; sourceTree = ""; }; - BEDEE25B2A4D38DB7336F3DA /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "version.h"; path = "version.h"; sourceTree = ""; }; - 00C36B686C522D53754E0E6B /* versionNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "versionNumber.h"; path = "versionNumber.h"; sourceTree = ""; }; - FF7D561FEBFA496214784A76 /* libopenmpt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt.h"; path = "libopenmpt.h"; sourceTree = ""; }; - A12227FB8D8AEDC8F6F501DF /* libopenmpt.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt.hpp"; path = "libopenmpt.hpp"; sourceTree = ""; }; - E0A38FA6CCB68FFF75A06CEC /* libopenmpt_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_c.cpp"; path = "libopenmpt_c.cpp"; sourceTree = ""; }; - 51358D5ABD70ED1DC6656AAD /* libopenmpt_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_config.h"; path = "libopenmpt_config.h"; sourceTree = ""; }; - AB8C8BC6970ADC5F80029AF7 /* libopenmpt_cxx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_cxx.cpp"; path = "libopenmpt_cxx.cpp"; sourceTree = ""; }; - F0CBC8E2DCDEC83B85C8A528 /* libopenmpt_ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_ext.h"; path = "libopenmpt_ext.h"; sourceTree = ""; }; - D2619CDABEDFEC73A7D7AA0B /* libopenmpt_ext.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext.hpp"; path = "libopenmpt_ext.hpp"; sourceTree = ""; }; - 00F1936D6C023C14F553CE53 /* libopenmpt_ext_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_ext_impl.cpp"; path = "libopenmpt_ext_impl.cpp"; sourceTree = ""; }; - 9E4A50270A5CF8CD93AD8A0D /* libopenmpt_ext_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext_impl.hpp"; path = "libopenmpt_ext_impl.hpp"; sourceTree = ""; }; - EB31548F576DB452606231E2 /* libopenmpt_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_impl.cpp"; path = "libopenmpt_impl.cpp"; sourceTree = ""; }; - 1278B7FF7EB317C387A89452 /* libopenmpt_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_impl.hpp"; path = "libopenmpt_impl.hpp"; sourceTree = ""; }; - 5F96AEB5CB5C0BD214B89934 /* libopenmpt_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_internal.h"; path = "libopenmpt_internal.h"; sourceTree = ""; }; - 881BE943741C7DBE9DE4E942 /* libopenmpt_stream_callbacks_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_buffer.h"; path = "libopenmpt_stream_callbacks_buffer.h"; sourceTree = ""; }; - 5196A3873D016493E61CC9F8 /* libopenmpt_stream_callbacks_fd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_fd.h"; path = "libopenmpt_stream_callbacks_fd.h"; sourceTree = ""; }; - E9072015D5DDA612BE87C165 /* libopenmpt_stream_callbacks_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_file.h"; path = "libopenmpt_stream_callbacks_file.h"; sourceTree = ""; }; - 6754160A53FD7D397C9399B8 /* libopenmpt_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_version.h"; path = "libopenmpt_version.h"; sourceTree = ""; }; - E94A3B16D5C72E59FE442F6D /* AudioSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioSample.h"; path = "AudioSample.h"; sourceTree = ""; }; - 376C68D9A325D3832C85ED5D /* Dither.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dither.h"; path = "Dither.h"; sourceTree = ""; }; - E04519EDCC97F0DCB5B62DED /* MixSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSample.h"; path = "MixSample.h"; sourceTree = ""; }; - 83603E98EFD04011B8EFBA99 /* MixSampleConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSampleConvert.h"; path = "MixSampleConvert.h"; sourceTree = ""; }; - 10C48C997CDEEF3AC50000CF /* SampleBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleBuffer.h"; path = "SampleBuffer.h"; sourceTree = ""; }; - C135F3922D505634767266C8 /* SampleFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormat.h"; path = "SampleFormat.h"; sourceTree = ""; }; - 4E4E0060BA5FA80643B13A46 /* SampleFormatConverters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatConverters.h"; path = "SampleFormatConverters.h"; sourceTree = ""; }; - 97CCA6B8033DA931CC5B23BA /* SampleFormatCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatCopy.h"; path = "SampleFormatCopy.h"; sourceTree = ""; }; - 46183367B28688E6FB6F43E6 /* AGC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AGC.cpp"; path = "AGC.cpp"; sourceTree = ""; }; - CD394DF7391D5C3742208A73 /* AGC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AGC.h"; path = "AGC.h"; sourceTree = ""; }; - A639A31612A8F8955B91B395 /* DSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DSP.cpp"; path = "DSP.cpp"; sourceTree = ""; }; - 2494821B9077915B997ABF97 /* DSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DSP.h"; path = "DSP.h"; sourceTree = ""; }; - 90CB8F337C1C7B75A5806937 /* EQ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "EQ.cpp"; path = "EQ.cpp"; sourceTree = ""; }; - 5712F8F64338C25D2C7E4729 /* EQ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "EQ.h"; path = "EQ.h"; sourceTree = ""; }; - C4F5C613B0DC880B592DEF28 /* Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Reverb.cpp"; path = "Reverb.cpp"; sourceTree = ""; }; - 8B509D47778CA0B1E09EB8A8 /* Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Reverb.h"; path = "Reverb.h"; sourceTree = ""; }; - 3C7C769D28106C4591D4C5F9 /* AudioCriticalSection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AudioCriticalSection.cpp"; path = "AudioCriticalSection.cpp"; sourceTree = ""; }; - 8374A0D26F1D080298B32381 /* AudioCriticalSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioCriticalSection.h"; path = "AudioCriticalSection.h"; sourceTree = ""; }; - 4820202EB485B3B43D5E558D /* AudioReadTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioReadTarget.h"; path = "AudioReadTarget.h"; sourceTree = ""; }; - 2770B7559334B6455C9AE60F /* BitReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "BitReader.h"; path = "BitReader.h"; sourceTree = ""; }; - 234520938FD4E17D98D0C295 /* ChunkReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ChunkReader.h"; path = "ChunkReader.h"; sourceTree = ""; }; - 0AD00B1E76940A0E3FFA3AD8 /* Container.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Container.h"; path = "Container.h"; sourceTree = ""; }; - 81C3378A6DD637E316C014D0 /* ContainerMMCMP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerMMCMP.cpp"; path = "ContainerMMCMP.cpp"; sourceTree = ""; }; - 8B374EEFF79CE1758075834E /* ContainerPP20.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerPP20.cpp"; path = "ContainerPP20.cpp"; sourceTree = ""; }; - A5CD504691351714FAA02B2A /* ContainerUMX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerUMX.cpp"; path = "ContainerUMX.cpp"; sourceTree = ""; }; - 60C9E97F4C31B04DB59CC463 /* ContainerXPK.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerXPK.cpp"; path = "ContainerXPK.cpp"; sourceTree = ""; }; - 82966FC4EE5A6EB4B7C09E7E /* Dlsbank.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Dlsbank.cpp"; path = "Dlsbank.cpp"; sourceTree = ""; }; - 094AC98A75033435FE624E0F /* Dlsbank.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dlsbank.h"; path = "Dlsbank.h"; sourceTree = ""; }; - 033046886FF44478385A7542 /* Fastmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Fastmix.cpp"; path = "Fastmix.cpp"; sourceTree = ""; }; - A976C22395C899137EE7D623 /* FloatMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FloatMixer.h"; path = "FloatMixer.h"; sourceTree = ""; }; - BA75D59E26DB6825AFB30AFE /* ITCompression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITCompression.cpp"; path = "ITCompression.cpp"; sourceTree = ""; }; - 785621D1E47084722D939406 /* ITCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITCompression.h"; path = "ITCompression.h"; sourceTree = ""; }; - F445C353600AC2432970F20D /* ITTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITTools.cpp"; path = "ITTools.cpp"; sourceTree = ""; }; - FB7426CE672E9178F08DAB52 /* ITTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITTools.h"; path = "ITTools.h"; sourceTree = ""; }; - B3A411869F38072E08FD60E2 /* InstrumentExtensions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "InstrumentExtensions.cpp"; path = "InstrumentExtensions.cpp"; sourceTree = ""; }; - E1A6F598CD8DB79076DE1DAE /* IntMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "IntMixer.h"; path = "IntMixer.h"; sourceTree = ""; }; - E922BFF4D57496E4BE93D3F4 /* Load_669.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_669.cpp"; path = "Load_669.cpp"; sourceTree = ""; }; - 7ABCB9EE660E91DE4F2DCEEE /* Load_amf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_amf.cpp"; path = "Load_amf.cpp"; sourceTree = ""; }; - A9723D6595C414557EE35165 /* Load_ams.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ams.cpp"; path = "Load_ams.cpp"; sourceTree = ""; }; - 3A2F3980268110700FA04D80 /* Load_c67.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_c67.cpp"; path = "Load_c67.cpp"; sourceTree = ""; }; - 3FADA47D2BFF7B6D141EB97D /* Load_dbm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dbm.cpp"; path = "Load_dbm.cpp"; sourceTree = ""; }; - 626C67FACEFB28E5D7F709FD /* Load_digi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_digi.cpp"; path = "Load_digi.cpp"; sourceTree = ""; }; - 3EEEA1E22A4079D2135FB6E2 /* Load_dmf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dmf.cpp"; path = "Load_dmf.cpp"; sourceTree = ""; }; - 2D1D0419196FDB08028E1819 /* Load_dsm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsm.cpp"; path = "Load_dsm.cpp"; sourceTree = ""; }; - 08D8B6C2746778AD7D6359C5 /* Load_dsym.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsym.cpp"; path = "Load_dsym.cpp"; sourceTree = ""; }; - F2A55F16DEF73606C7167416 /* Load_dtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dtm.cpp"; path = "Load_dtm.cpp"; sourceTree = ""; }; - 9FB35A128B05320274246F12 /* Load_far.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_far.cpp"; path = "Load_far.cpp"; sourceTree = ""; }; - EF83F00ADBD5C7FAC4F4040B /* Load_fmt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_fmt.cpp"; path = "Load_fmt.cpp"; sourceTree = ""; }; - A2BF428A8E111A7A7730578A /* Load_gdm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_gdm.cpp"; path = "Load_gdm.cpp"; sourceTree = ""; }; - C8156F5FB467464F9D86835F /* Load_imf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_imf.cpp"; path = "Load_imf.cpp"; sourceTree = ""; }; - 2BE69F5F97AA9E4F6010CF19 /* Load_it.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_it.cpp"; path = "Load_it.cpp"; sourceTree = ""; }; - 74162BB8606802A849873FB8 /* Load_itp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_itp.cpp"; path = "Load_itp.cpp"; sourceTree = ""; }; - 66A16AE852F341D83B127FE8 /* Load_mdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mdl.cpp"; path = "Load_mdl.cpp"; sourceTree = ""; }; - 213FEC7A0D91C36AF6AF007B /* Load_med.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_med.cpp"; path = "Load_med.cpp"; sourceTree = ""; }; - 27D80507132ADDF6FC481A07 /* Load_mid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mid.cpp"; path = "Load_mid.cpp"; sourceTree = ""; }; - DE23C7BACA759EAAB394DBBA /* Load_mo3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mo3.cpp"; path = "Load_mo3.cpp"; sourceTree = ""; }; - C80574FBB4574BEB9D7688FB /* Load_mod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mod.cpp"; path = "Load_mod.cpp"; sourceTree = ""; }; - 1DECE55F093EBD4FF25CFA5F /* Load_mt2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mt2.cpp"; path = "Load_mt2.cpp"; sourceTree = ""; }; - 3AEFB64126418E310F60CB41 /* Load_mtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mtm.cpp"; path = "Load_mtm.cpp"; sourceTree = ""; }; - BAE3374A26FE9AEB6F20AB7F /* Load_mus_km.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mus_km.cpp"; path = "Load_mus_km.cpp"; sourceTree = ""; }; - 9EDE23268A30FB15734F3826 /* Load_okt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_okt.cpp"; path = "Load_okt.cpp"; sourceTree = ""; }; - F2EE6B1DDE40430DC75F801D /* Load_plm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_plm.cpp"; path = "Load_plm.cpp"; sourceTree = ""; }; - 3B3E749027904B8010AF8890 /* Load_psm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_psm.cpp"; path = "Load_psm.cpp"; sourceTree = ""; }; - FE209F35EA727625D391B335 /* Load_ptm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ptm.cpp"; path = "Load_ptm.cpp"; sourceTree = ""; }; - A2D80BC78E2AE3B6774920C7 /* Load_s3m.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_s3m.cpp"; path = "Load_s3m.cpp"; sourceTree = ""; }; - 0258BF8EEEA9967ED7C8D38E /* Load_sfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_sfx.cpp"; path = "Load_sfx.cpp"; sourceTree = ""; }; - BE062679AA58FD6893773A79 /* Load_stm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stm.cpp"; path = "Load_stm.cpp"; sourceTree = ""; }; - A32656D88F782DC878976AD8 /* Load_stp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stp.cpp"; path = "Load_stp.cpp"; sourceTree = ""; }; - A7C3277113DE8A125C009BA6 /* Load_symmod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_symmod.cpp"; path = "Load_symmod.cpp"; sourceTree = ""; }; - 1EDF51BD0A3129ADF34F66BD /* Load_uax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_uax.cpp"; path = "Load_uax.cpp"; sourceTree = ""; }; - E77EEE5AD3D0C54ABCEF025B /* Load_ult.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ult.cpp"; path = "Load_ult.cpp"; sourceTree = ""; }; - B010DAF39C62B1E38581EEF3 /* Load_wav.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_wav.cpp"; path = "Load_wav.cpp"; sourceTree = ""; }; - E9A325CB556824BB1ECE5485 /* Load_xm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_xm.cpp"; path = "Load_xm.cpp"; sourceTree = ""; }; - B67C94FB2236FFA5AB951980 /* Loaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Loaders.h"; path = "Loaders.h"; sourceTree = ""; }; - 01A54485ED2138C8169F38DC /* MIDIEvents.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIEvents.cpp"; path = "MIDIEvents.cpp"; sourceTree = ""; }; - 88BD923C740F6A2C5D2EA73C /* MIDIEvents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIEvents.h"; path = "MIDIEvents.h"; sourceTree = ""; }; - EC1C3DB0D89930F301173107 /* MIDIMacros.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIMacros.cpp"; path = "MIDIMacros.cpp"; sourceTree = ""; }; - B33EA6149F907D0488AFBA14 /* MIDIMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIMacros.h"; path = "MIDIMacros.h"; sourceTree = ""; }; - 5C6B0284C8FAC36ED1F6A486 /* MPEGFrame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MPEGFrame.cpp"; path = "MPEGFrame.cpp"; sourceTree = ""; }; - E37887224F3D861218A3B6DC /* MPEGFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MPEGFrame.h"; path = "MPEGFrame.h"; sourceTree = ""; }; - 51385011BDFC4E0186627FCB /* Message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Message.cpp"; path = "Message.cpp"; sourceTree = ""; }; - 8FE0A34DFB990EF884F928D2 /* Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Message.h"; path = "Message.h"; sourceTree = ""; }; - E9638FF8D5CB55C63E376ADC /* MixFuncTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixFuncTable.cpp"; path = "MixFuncTable.cpp"; sourceTree = ""; }; - F02A9277DCA785BA052586CE /* MixFuncTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixFuncTable.h"; path = "MixFuncTable.h"; sourceTree = ""; }; - F513060161825B80AA6B1680 /* Mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Mixer.h"; path = "Mixer.h"; sourceTree = ""; }; - 884A9E2774B264F5DD1D790B /* MixerInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerInterface.h"; path = "MixerInterface.h"; sourceTree = ""; }; - 78C9FA866446EEC98DC3EEDD /* MixerLoops.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerLoops.cpp"; path = "MixerLoops.cpp"; sourceTree = ""; }; - 3F58B7222BAA8E1214C9CB22 /* MixerLoops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerLoops.h"; path = "MixerLoops.h"; sourceTree = ""; }; - 4031A658AC9639DF356FDBB7 /* MixerSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerSettings.cpp"; path = "MixerSettings.cpp"; sourceTree = ""; }; - C7865D7E33A1C01F7CC3D0B3 /* MixerSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerSettings.h"; path = "MixerSettings.h"; sourceTree = ""; }; - E78CF131D309E574FC86E588 /* ModChannel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModChannel.cpp"; path = "ModChannel.cpp"; sourceTree = ""; }; - 05E927AFF13AFF9EDA593CAF /* ModChannel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModChannel.h"; path = "ModChannel.h"; sourceTree = ""; }; - 02A29E0A6E073291F7DFD369 /* ModInstrument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModInstrument.cpp"; path = "ModInstrument.cpp"; sourceTree = ""; }; - 09DF9E1A75F901BCBE1B1250 /* ModInstrument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModInstrument.h"; path = "ModInstrument.h"; sourceTree = ""; }; - AF6196981BF1578324ED389B /* ModSample.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSample.cpp"; path = "ModSample.cpp"; sourceTree = ""; }; - 76BEF36AE282F25AABE82225 /* ModSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSample.h"; path = "ModSample.h"; sourceTree = ""; }; - 8A83B34AF69D16EC3FC02680 /* ModSampleCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSampleCopy.h"; path = "ModSampleCopy.h"; sourceTree = ""; }; - 63C188DFCFDBEB8018FEFB14 /* ModSequence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSequence.cpp"; path = "ModSequence.cpp"; sourceTree = ""; }; - AA1915CB16A9D6B51FA5B7CD /* ModSequence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSequence.h"; path = "ModSequence.h"; sourceTree = ""; }; - 195FB3DD85CD085DCEB6C35C /* OPL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OPL.cpp"; path = "OPL.cpp"; sourceTree = ""; }; - E0AF57C14C9366015596943D /* OPL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OPL.h"; path = "OPL.h"; sourceTree = ""; }; - 521A6663BEA9274EC7A50866 /* OggStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OggStream.cpp"; path = "OggStream.cpp"; sourceTree = ""; }; - 59F2261CC5B6250C8E1C56D6 /* OggStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OggStream.h"; path = "OggStream.h"; sourceTree = ""; }; - 4002FE2CACBB68D7351B83B1 /* Paula.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Paula.cpp"; path = "Paula.cpp"; sourceTree = ""; }; - C775A39B33E4F81A7CCDB31A /* Paula.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Paula.h"; path = "Paula.h"; sourceTree = ""; }; - 8155EB0DED19EAFDB67F1AC8 /* Resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Resampler.h"; path = "Resampler.h"; sourceTree = ""; }; - 129D1878FE190CBB27970CCF /* RowVisitor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "RowVisitor.cpp"; path = "RowVisitor.cpp"; sourceTree = ""; }; - 597D37F345CF0EE32EEE4BF3 /* RowVisitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "RowVisitor.h"; path = "RowVisitor.h"; sourceTree = ""; }; - B2F24F229E44271287636422 /* S3MTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "S3MTools.cpp"; path = "S3MTools.cpp"; sourceTree = ""; }; - 798297766569596E0EBABF8B /* S3MTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "S3MTools.h"; path = "S3MTools.h"; sourceTree = ""; }; - A3EF8A9B0F608D14D87E079D /* SampleFormatBRR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatBRR.cpp"; path = "SampleFormatBRR.cpp"; sourceTree = ""; }; - 8CF15914786FAAAD61676845 /* SampleFormatFLAC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatFLAC.cpp"; path = "SampleFormatFLAC.cpp"; sourceTree = ""; }; - 08C5199174351C0A3D549692 /* SampleFormatMP3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMP3.cpp"; path = "SampleFormatMP3.cpp"; sourceTree = ""; }; - 51283E4FBD9A806B062FB6EF /* SampleFormatMediaFoundation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMediaFoundation.cpp"; path = "SampleFormatMediaFoundation.cpp"; sourceTree = ""; }; - A36716E08FE5667978DD2411 /* SampleFormatOpus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatOpus.cpp"; path = "SampleFormatOpus.cpp"; sourceTree = ""; }; - 914210D4FDB2124DC6D18CD5 /* SampleFormatSFZ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatSFZ.cpp"; path = "SampleFormatSFZ.cpp"; sourceTree = ""; }; - 2C53444118FCAB704192C7EF /* SampleFormatVorbis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatVorbis.cpp"; path = "SampleFormatVorbis.cpp"; sourceTree = ""; }; - 4C8CAEC9B8F1415041CAE328 /* SampleFormats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormats.cpp"; path = "SampleFormats.cpp"; sourceTree = ""; }; - 4AFFD6F63651AEE61F70EBF6 /* SampleIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleIO.cpp"; path = "SampleIO.cpp"; sourceTree = ""; }; - 11894234FD6F042CA6C06A49 /* SampleIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleIO.h"; path = "SampleIO.h"; sourceTree = ""; }; - 7FA7C6CA6B8E88C214DFEEDF /* Snd_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Snd_defs.h"; path = "Snd_defs.h"; sourceTree = ""; }; - 8ED5D7DDFA99D6CDC3FF0698 /* Snd_flt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_flt.cpp"; path = "Snd_flt.cpp"; sourceTree = ""; }; - 0889B141F46F73399DC0D956 /* Snd_fx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_fx.cpp"; path = "Snd_fx.cpp"; sourceTree = ""; }; - 4DE5ACEAB9A9ABDA820FDCA4 /* Sndfile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndfile.cpp"; path = "Sndfile.cpp"; sourceTree = ""; }; - 146A3EBF8023A9690983C343 /* Sndfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Sndfile.h"; path = "Sndfile.h"; sourceTree = ""; }; - 1F9C7BC50B833DBDB4D3A3DA /* Sndmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndmix.cpp"; path = "Sndmix.cpp"; sourceTree = ""; }; - 3A2316F1A6E9720DEF440170 /* SoundFilePlayConfig.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SoundFilePlayConfig.cpp"; path = "SoundFilePlayConfig.cpp"; sourceTree = ""; }; - C13B7D272D77DDEA366C5A7A /* SoundFilePlayConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SoundFilePlayConfig.h"; path = "SoundFilePlayConfig.h"; sourceTree = ""; }; - 847994AF706056A719B1BCC4 /* Tables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tables.cpp"; path = "Tables.cpp"; sourceTree = ""; }; - 4BE4B6B63720BA20A032D217 /* Tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tables.h"; path = "Tables.h"; sourceTree = ""; }; - 0E2CE45C7AF0E24C43561317 /* Tagging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tagging.cpp"; path = "Tagging.cpp"; sourceTree = ""; }; - 0CC13DCB787AA87501DAC24F /* Tagging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tagging.h"; path = "Tagging.h"; sourceTree = ""; }; - ECAC07275871061721D736E1 /* TinyFFT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "TinyFFT.cpp"; path = "TinyFFT.cpp"; sourceTree = ""; }; - F3BDB4C45F771F6FE8D63949 /* TinyFFT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "TinyFFT.h"; path = "TinyFFT.h"; sourceTree = ""; }; - F788BDF4E3DA94E4CCF9D1F4 /* UMXTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UMXTools.cpp"; path = "UMXTools.cpp"; sourceTree = ""; }; - 7EC3B01D6AAA721513FBD832 /* UMXTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UMXTools.h"; path = "UMXTools.h"; sourceTree = ""; }; - F5C7AFC7612D434EEA05E526 /* UpgradeModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UpgradeModule.cpp"; path = "UpgradeModule.cpp"; sourceTree = ""; }; - 08381BBCF489F2ABDDA82FBC /* WAVTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WAVTools.cpp"; path = "WAVTools.cpp"; sourceTree = ""; }; - 4F7A05BD3B61C7B4E4B12DD2 /* WAVTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WAVTools.h"; path = "WAVTools.h"; sourceTree = ""; }; - 2FFD15809B177921E43989B5 /* WindowedFIR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WindowedFIR.cpp"; path = "WindowedFIR.cpp"; sourceTree = ""; }; - 76F2488FE2810A7AEB7DEB91 /* WindowedFIR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WindowedFIR.h"; path = "WindowedFIR.h"; sourceTree = ""; }; - 5EE81FA5CAAC1E9593124F5F /* XMTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "XMTools.cpp"; path = "XMTools.cpp"; sourceTree = ""; }; - E5744324512EAECEDA8DC8A8 /* XMTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "XMTools.h"; path = "XMTools.h"; sourceTree = ""; }; - 294D3010159F0700FEBD4410 /* load_j2b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "load_j2b.cpp"; path = "load_j2b.cpp"; sourceTree = ""; }; - 814AC2DA6DF3290A96894589 /* mod_specifications.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mod_specifications.cpp"; path = "mod_specifications.cpp"; sourceTree = ""; }; - 08E5A74DF462F8E6DD5AB67E /* mod_specifications.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mod_specifications.h"; path = "mod_specifications.h"; sourceTree = ""; }; - 08812CFDF4FD1F401D7B2054 /* modcommand.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modcommand.cpp"; path = "modcommand.cpp"; sourceTree = ""; }; - CFEBF58EBB3DCD7EA45C0A8F /* modcommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modcommand.h"; path = "modcommand.h"; sourceTree = ""; }; - F18BC5CD5DA6286FA6C83803 /* modsmp_ctrl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modsmp_ctrl.cpp"; path = "modsmp_ctrl.cpp"; sourceTree = ""; }; - B8E8E1922478A37D2D748495 /* modsmp_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modsmp_ctrl.h"; path = "modsmp_ctrl.h"; sourceTree = ""; }; - E266E428CEB7CF6AF71BBE2C /* opal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "opal.h"; path = "opal.h"; sourceTree = ""; }; - 4822C14EB4E6BF3E7D4CF008 /* pattern.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "pattern.cpp"; path = "pattern.cpp"; sourceTree = ""; }; - 4F2C9921BBE503CC44451EA6 /* pattern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "pattern.h"; path = "pattern.h"; sourceTree = ""; }; - 4F9C3B3D3B1A8CD624124A6E /* patternContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "patternContainer.cpp"; path = "patternContainer.cpp"; sourceTree = ""; }; - D68280FDC29580566B7F5D43 /* patternContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "patternContainer.h"; path = "patternContainer.h"; sourceTree = ""; }; - F527128B6144047C2A1C71E9 /* DigiBoosterEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DigiBoosterEcho.cpp"; path = "DigiBoosterEcho.cpp"; sourceTree = ""; }; - BC2659D128380178B18993B7 /* DigiBoosterEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DigiBoosterEcho.h"; path = "DigiBoosterEcho.h"; sourceTree = ""; }; - 2F0089A19B3BE964A43066F4 /* LFOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "LFOPlugin.cpp"; path = "LFOPlugin.cpp"; sourceTree = ""; }; - F65E970E62CF99872BEE1310 /* LFOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "LFOPlugin.h"; path = "LFOPlugin.h"; sourceTree = ""; }; - 35100F5EA175A2E42A4E44BD /* OpCodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OpCodes.h"; path = "OpCodes.h"; sourceTree = ""; }; - 85CB2752F1DCCFF87A2E6238 /* PlugInterface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PlugInterface.cpp"; path = "PlugInterface.cpp"; sourceTree = ""; }; - CC6D25B5383482D1818F1034 /* PlugInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PlugInterface.h"; path = "PlugInterface.h"; sourceTree = ""; }; - CAB0009F36C2A845BF133B85 /* PluginManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PluginManager.cpp"; path = "PluginManager.cpp"; sourceTree = ""; }; - D13D8A553D04E771865F75D4 /* PluginManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginManager.h"; path = "PluginManager.h"; sourceTree = ""; }; - A066DC7B0C78842295C91662 /* PluginMixBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginMixBuffer.h"; path = "PluginMixBuffer.h"; sourceTree = ""; }; - E96DF64E5534536B9E8FE1CD /* PluginStructs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginStructs.h"; path = "PluginStructs.h"; sourceTree = ""; }; - 3702474223ABAE714C41CAF0 /* SymMODEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SymMODEcho.cpp"; path = "SymMODEcho.cpp"; sourceTree = ""; }; - 3E370FFE2AB55F9713AD1D2F /* SymMODEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SymMODEcho.h"; path = "SymMODEcho.h"; sourceTree = ""; }; - A748CBA393F132D3BC874E52 /* Chorus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Chorus.cpp"; path = "Chorus.cpp"; sourceTree = ""; }; - AE21EF679A9F3F018397FD98 /* Chorus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Chorus.h"; path = "Chorus.h"; sourceTree = ""; }; - 324CF1ED1E8B9B69C70D789B /* Compressor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Compressor.cpp"; path = "Compressor.cpp"; sourceTree = ""; }; - 79F7C0FD658BB6A5CE4F105A /* Compressor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Compressor.h"; path = "Compressor.h"; sourceTree = ""; }; - 38FD1854A40EC1FA2D60533A /* DMOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOPlugin.cpp"; path = "DMOPlugin.cpp"; sourceTree = ""; }; - BF96A8892B5D05A674B89308 /* DMOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOPlugin.h"; path = "DMOPlugin.h"; sourceTree = ""; }; - 9E6CA3568A0099FEF3C4F2B2 /* DMOUtils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOUtils.cpp"; path = "DMOUtils.cpp"; sourceTree = ""; }; - 3CE2CB18288B334851214FC7 /* DMOUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOUtils.h"; path = "DMOUtils.h"; sourceTree = ""; }; - B7E54627A324F1A24CA7CDD4 /* Distortion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Distortion.cpp"; path = "Distortion.cpp"; sourceTree = ""; }; - BE6B682FAAFF5DD713C4B78B /* Distortion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Distortion.h"; path = "Distortion.h"; sourceTree = ""; }; - 4B5F02E737DD528020D51018 /* Echo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Echo.cpp"; path = "Echo.cpp"; sourceTree = ""; }; - D256821FBE69827867535F65 /* Echo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Echo.h"; path = "Echo.h"; sourceTree = ""; }; - E6C3D4E8528A31059BE5BF67 /* Flanger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Flanger.cpp"; path = "Flanger.cpp"; sourceTree = ""; }; - 6DC18303D9FCE3C6E2F16056 /* Flanger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Flanger.h"; path = "Flanger.h"; sourceTree = ""; }; - DD90FE0BC939663BF2CF81BA /* Gargle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Gargle.cpp"; path = "Gargle.cpp"; sourceTree = ""; }; - 64E42623506277BC395A3554 /* Gargle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Gargle.h"; path = "Gargle.h"; sourceTree = ""; }; - F3F92A725F161D6328EE89D0 /* I3DL2Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "I3DL2Reverb.cpp"; path = "I3DL2Reverb.cpp"; sourceTree = ""; }; - B12324271D35CCCDA6865E0D /* I3DL2Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "I3DL2Reverb.h"; path = "I3DL2Reverb.h"; sourceTree = ""; }; - D13FDA133D0637308661C592 /* ParamEq.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ParamEq.cpp"; path = "ParamEq.cpp"; sourceTree = ""; }; - 984693AC0482F36F0D7770FF /* ParamEq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ParamEq.h"; path = "ParamEq.h"; sourceTree = ""; }; - DAAC944646C986370FA1F3A4 /* WavesReverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WavesReverb.cpp"; path = "WavesReverb.cpp"; sourceTree = ""; }; - 612E3B4CCD3FE3F256917532 /* WavesReverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WavesReverb.h"; path = "WavesReverb.h"; sourceTree = ""; }; - 7EBDDAED6AA49CE513F50203 /* tuning.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuning.cpp"; path = "tuning.cpp"; sourceTree = ""; }; - C5E1C72CB11DCB961A30E38D /* tuning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuning.h"; path = "tuning.h"; sourceTree = ""; }; - 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 = ""; }; + 5DDA4225494209F3B2AD1D09 /* ComponentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ComponentManager.cpp"; path = "ComponentManager.cpp"; sourceTree = ""; }; + E41C930DD0998650F9168764 /* ComponentManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ComponentManager.h"; path = "ComponentManager.h"; sourceTree = ""; }; + A78448B4133EB35E9C9DCD38 /* Endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Endianness.h"; path = "Endianness.h"; sourceTree = ""; }; + 6FE2766FDBA6755FA40CA629 /* FileReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "FileReader.cpp"; path = "FileReader.cpp"; sourceTree = ""; }; + F65ED53C621840E7EB775AC1 /* FileReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReader.h"; path = "FileReader.h"; sourceTree = ""; }; + 99113C54856313446E825054 /* FileReaderFwd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FileReaderFwd.h"; path = "FileReaderFwd.h"; sourceTree = ""; }; + CD158EA1B96679E3E2CA67A5 /* FlagSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FlagSet.h"; path = "FlagSet.h"; sourceTree = ""; }; + 82AF67226EEB6A8CD7FD8283 /* Logging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Logging.cpp"; path = "Logging.cpp"; sourceTree = ""; }; + 89EADC5C753BC89E9E9FB660 /* Logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Logging.h"; path = "Logging.h"; sourceTree = ""; }; + A2EFC5AF0EA9305A97084B34 /* Profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Profiler.cpp"; path = "Profiler.cpp"; sourceTree = ""; }; + E93A381155A98D909E924890 /* Profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Profiler.h"; path = "Profiler.h"; sourceTree = ""; }; + 4C98AFA3387F719BE1CFD7B8 /* misc_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "misc_util.cpp"; path = "misc_util.cpp"; sourceTree = ""; }; + CA05257BB64128E51F5440DC /* misc_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "misc_util.h"; path = "misc_util.h"; sourceTree = ""; }; + BFE3A15B2B52F7DA743BB2DA /* mptAlloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAlloc.h"; path = "mptAlloc.h"; sourceTree = ""; }; + 48BABC2F34F6BF999D08D890 /* mptAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptAssert.h"; path = "mptAssert.h"; sourceTree = ""; }; + 3894F8C224E6CFB20D050DC3 /* mptBaseMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseMacros.h"; path = "mptBaseMacros.h"; sourceTree = ""; }; + AA70483816354728DF9A77F2 /* mptBaseTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseTypes.h"; path = "mptBaseTypes.h"; sourceTree = ""; }; + FFBF31626B84305234EA601C /* mptBaseUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptBaseUtils.h"; path = "mptBaseUtils.h"; sourceTree = ""; }; + 4893B4B8347A76B0DDCADCCD /* mptFileIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptFileIO.cpp"; path = "mptFileIO.cpp"; sourceTree = ""; }; + 4F5DFCE53B99FF4FA4AB1747 /* mptFileIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptFileIO.h"; path = "mptFileIO.h"; sourceTree = ""; }; + CC1744E2B8682F24E1CC1DE6 /* mptIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptIO.cpp"; path = "mptIO.cpp"; sourceTree = ""; }; + D39FEC8CBFC5B6F3A80B3CBF /* mptIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptIO.h"; path = "mptIO.h"; sourceTree = ""; }; + 644C64E5D01063D59976939F /* mptLibrary.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptLibrary.cpp"; path = "mptLibrary.cpp"; sourceTree = ""; }; + ABC705E51781708FA0E08A69 /* mptLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptLibrary.h"; path = "mptLibrary.h"; sourceTree = ""; }; + 3187DC931DC3DFFD86D5F7F4 /* mptMemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMemory.h"; path = "mptMemory.h"; sourceTree = ""; }; + 4D54105FB9C265DE02AC20DE /* mptMutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptMutex.h"; path = "mptMutex.h"; sourceTree = ""; }; + 197ED1A205CFBCE42E33ABA6 /* mptOS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptOS.cpp"; path = "mptOS.cpp"; sourceTree = ""; }; + D71F5F7EC34529E5AC8BAEB0 /* mptOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOS.h"; path = "mptOS.h"; sourceTree = ""; }; + 482B33D7B4BAF4C1BDB6D5D9 /* mptOSException.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptOSException.h"; path = "mptOSException.h"; sourceTree = ""; }; + F8FFA039E47C947C0DFA9490 /* mptPathString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptPathString.cpp"; path = "mptPathString.cpp"; sourceTree = ""; }; + FFAE7297EB004A87D41F8797 /* mptPathString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptPathString.h"; path = "mptPathString.h"; sourceTree = ""; }; + 39CD38BA25B4FAB1CE0461CF /* mptRandom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptRandom.cpp"; path = "mptRandom.cpp"; sourceTree = ""; }; + 771B12226357158CCC692D83 /* mptRandom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptRandom.h"; path = "mptRandom.h"; sourceTree = ""; }; + 8A8D3F737674016B1FC56788 /* mptString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptString.cpp"; path = "mptString.cpp"; sourceTree = ""; }; + 11DF9F29FD1AA393662DBB8A /* mptString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptString.h"; path = "mptString.h"; sourceTree = ""; }; + 883EBBE474A681B2DD1196C8 /* mptStringBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringBuffer.cpp"; path = "mptStringBuffer.cpp"; sourceTree = ""; }; + 0FA2BEADFB1EB2F0249CB204 /* mptStringBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringBuffer.h"; path = "mptStringBuffer.h"; sourceTree = ""; }; + 32D37ED11E3B459F87A659B5 /* mptStringFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringFormat.cpp"; path = "mptStringFormat.cpp"; sourceTree = ""; }; + 39046168258154AB4EFE54BF /* mptStringFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringFormat.h"; path = "mptStringFormat.h"; sourceTree = ""; }; + 6877B1BCD491145E1DB424F2 /* mptStringParse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptStringParse.cpp"; path = "mptStringParse.cpp"; sourceTree = ""; }; + AF52CB081BE28CF324DE6D0B /* mptStringParse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptStringParse.h"; path = "mptStringParse.h"; sourceTree = ""; }; + 9798AB1383D4AE7DECE6C674 /* mptThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptThread.h"; path = "mptThread.h"; sourceTree = ""; }; + 223343AE0E6F461877815E0F /* mptTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptTime.cpp"; path = "mptTime.cpp"; sourceTree = ""; }; + 2906C3D61557AE183EBB9CDA /* mptTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptTime.h"; path = "mptTime.h"; sourceTree = ""; }; + 2E6521581AA124C283B33CB9 /* mptUUID.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mptUUID.cpp"; path = "mptUUID.cpp"; sourceTree = ""; }; + 35451523219600654AFAEE26 /* mptUUID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mptUUID.h"; path = "mptUUID.h"; sourceTree = ""; }; + B826E652A4A436EC8D9CF483 /* serialization_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "serialization_utils.cpp"; path = "serialization_utils.cpp"; sourceTree = ""; }; + 1D73D10C89E3D38552024E0E /* serialization_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "serialization_utils.h"; path = "serialization_utils.h"; sourceTree = ""; }; + 9B74965A87C5819CB029705E /* stdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stdafx.h"; path = "stdafx.h"; sourceTree = ""; }; + F4502D4D600A98F7E969B2D1 /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "version.cpp"; path = "version.cpp"; sourceTree = ""; }; + 7B878772E7F5DCF130DF97F1 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "version.h"; path = "version.h"; sourceTree = ""; }; + 862D8FBAF2BC50A5FBB831BD /* versionNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "versionNumber.h"; path = "versionNumber.h"; sourceTree = ""; }; + 1C50C87508CDBBB8314ABCCC /* libopenmpt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt.h"; path = "libopenmpt.h"; sourceTree = ""; }; + FEEF55B5EA571C8353C33099 /* libopenmpt.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt.hpp"; path = "libopenmpt.hpp"; sourceTree = ""; }; + 7D3CA7A7694FA700123984ED /* libopenmpt_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_c.cpp"; path = "libopenmpt_c.cpp"; sourceTree = ""; }; + D7C59D9F4301FE624CF67AF2 /* libopenmpt_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_config.h"; path = "libopenmpt_config.h"; sourceTree = ""; }; + 88C0EB6B743E3C055D36FA9C /* libopenmpt_cxx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_cxx.cpp"; path = "libopenmpt_cxx.cpp"; sourceTree = ""; }; + 8D64E0E37977E03C2261BD29 /* libopenmpt_ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_ext.h"; path = "libopenmpt_ext.h"; sourceTree = ""; }; + AF95FC7F9B134D19840B0BB1 /* libopenmpt_ext.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext.hpp"; path = "libopenmpt_ext.hpp"; sourceTree = ""; }; + FD16906969283810F279CA4F /* libopenmpt_ext_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_ext_impl.cpp"; path = "libopenmpt_ext_impl.cpp"; sourceTree = ""; }; + 24AEA1AB90BF49521911DC91 /* libopenmpt_ext_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_ext_impl.hpp"; path = "libopenmpt_ext_impl.hpp"; sourceTree = ""; }; + 68E1BAE0D41C1BA4DD119833 /* libopenmpt_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "libopenmpt_impl.cpp"; path = "libopenmpt_impl.cpp"; sourceTree = ""; }; + 8F271E51FB627E140458FBA3 /* libopenmpt_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libopenmpt_impl.hpp"; path = "libopenmpt_impl.hpp"; sourceTree = ""; }; + 1C197FFB88DFDB17D13A6A7A /* libopenmpt_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_internal.h"; path = "libopenmpt_internal.h"; sourceTree = ""; }; + A55432B09155C62ABA1D33AF /* libopenmpt_stream_callbacks_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_buffer.h"; path = "libopenmpt_stream_callbacks_buffer.h"; sourceTree = ""; }; + 9750BCAA83BB7CB62CD7E11B /* libopenmpt_stream_callbacks_fd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_fd.h"; path = "libopenmpt_stream_callbacks_fd.h"; sourceTree = ""; }; + C6559EA8B22B25A69BD53FF9 /* libopenmpt_stream_callbacks_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_stream_callbacks_file.h"; path = "libopenmpt_stream_callbacks_file.h"; sourceTree = ""; }; + 84F35288709CBAB79932D636 /* libopenmpt_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libopenmpt_version.h"; path = "libopenmpt_version.h"; sourceTree = ""; }; + 061DAD6CF299A0AF1B17A1C3 /* AudioSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioSample.h"; path = "AudioSample.h"; sourceTree = ""; }; + 3438DA2BA0F144D629515FB0 /* Dither.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dither.h"; path = "Dither.h"; sourceTree = ""; }; + A67796EF92C96DDF7BE8AAEF /* MixSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSample.h"; path = "MixSample.h"; sourceTree = ""; }; + C00C49BC2C7D4B35F59BC5BD /* MixSampleConvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixSampleConvert.h"; path = "MixSampleConvert.h"; sourceTree = ""; }; + CDD938BE39F49B5F8216ACF3 /* SampleBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleBuffer.h"; path = "SampleBuffer.h"; sourceTree = ""; }; + 7E4B9FB7EA650259338812ED /* SampleFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormat.h"; path = "SampleFormat.h"; sourceTree = ""; }; + 4B74FC5BB785A40240D73642 /* SampleFormatConverters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatConverters.h"; path = "SampleFormatConverters.h"; sourceTree = ""; }; + 9D832DC109F42F3AD212AAC2 /* SampleFormatCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleFormatCopy.h"; path = "SampleFormatCopy.h"; sourceTree = ""; }; + 03C1D77D6F2F2DFDB818E8FC /* AGC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AGC.cpp"; path = "AGC.cpp"; sourceTree = ""; }; + 4A8F466AB67255AABF7583E6 /* AGC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AGC.h"; path = "AGC.h"; sourceTree = ""; }; + 63E2472DCF509DAC183A58AC /* DSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DSP.cpp"; path = "DSP.cpp"; sourceTree = ""; }; + AAD87E2A16BC8D6A1FBFBBA6 /* DSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DSP.h"; path = "DSP.h"; sourceTree = ""; }; + ADD0B30599219F47C2858D09 /* EQ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "EQ.cpp"; path = "EQ.cpp"; sourceTree = ""; }; + 342C2EE32052F84909987D15 /* EQ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "EQ.h"; path = "EQ.h"; sourceTree = ""; }; + 614172B44D2834ACF6789AC9 /* Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Reverb.cpp"; path = "Reverb.cpp"; sourceTree = ""; }; + E810D732D44CDA9C3D5FF293 /* Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Reverb.h"; path = "Reverb.h"; sourceTree = ""; }; + 0287C6D7EE1ABC7F57DF1534 /* AudioCriticalSection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "AudioCriticalSection.cpp"; path = "AudioCriticalSection.cpp"; sourceTree = ""; }; + A013DD508CBC4480B55260FF /* AudioCriticalSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioCriticalSection.h"; path = "AudioCriticalSection.h"; sourceTree = ""; }; + 4599282EB1FEBBB43AD75D8D /* AudioReadTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AudioReadTarget.h"; path = "AudioReadTarget.h"; sourceTree = ""; }; + 642FCC0BD0F3CAFB9959FBC5 /* BitReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "BitReader.h"; path = "BitReader.h"; sourceTree = ""; }; + A0C761210C57230C15530424 /* ChunkReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ChunkReader.h"; path = "ChunkReader.h"; sourceTree = ""; }; + F96BF7C66530F6B62E962681 /* Container.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Container.h"; path = "Container.h"; sourceTree = ""; }; + E766CB6FD379CBC87C63A8B5 /* ContainerMMCMP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerMMCMP.cpp"; path = "ContainerMMCMP.cpp"; sourceTree = ""; }; + 3106A8899D6B3B102644DDE8 /* ContainerPP20.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerPP20.cpp"; path = "ContainerPP20.cpp"; sourceTree = ""; }; + 8B5FB83377C77E01E0329317 /* ContainerUMX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerUMX.cpp"; path = "ContainerUMX.cpp"; sourceTree = ""; }; + 465B516D32C3173B9B2E2C51 /* ContainerXPK.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ContainerXPK.cpp"; path = "ContainerXPK.cpp"; sourceTree = ""; }; + 71325B6DDDF6595DA65C8A27 /* Dlsbank.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Dlsbank.cpp"; path = "Dlsbank.cpp"; sourceTree = ""; }; + 06163BDD72CFA587FB2EC061 /* Dlsbank.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Dlsbank.h"; path = "Dlsbank.h"; sourceTree = ""; }; + 40EF5A3EACB3592E75198AF8 /* Fastmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Fastmix.cpp"; path = "Fastmix.cpp"; sourceTree = ""; }; + 861D6F9C726F468C5B8E839C /* FloatMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "FloatMixer.h"; path = "FloatMixer.h"; sourceTree = ""; }; + B7EEDD9E23547125AC2C13FE /* ITCompression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITCompression.cpp"; path = "ITCompression.cpp"; sourceTree = ""; }; + 7E7AC939EA942CDB33B73C6F /* ITCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITCompression.h"; path = "ITCompression.h"; sourceTree = ""; }; + 3105D8099DC9D6F9662F07C4 /* ITTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ITTools.cpp"; path = "ITTools.cpp"; sourceTree = ""; }; + F840982064FA02CBED591DA5 /* ITTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ITTools.h"; path = "ITTools.h"; sourceTree = ""; }; + 107FF285FC12E82D65D741E2 /* InstrumentExtensions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "InstrumentExtensions.cpp"; path = "InstrumentExtensions.cpp"; sourceTree = ""; }; + 7EF2A0396AD96231132AC94E /* IntMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "IntMixer.h"; path = "IntMixer.h"; sourceTree = ""; }; + AF543CF79BA613E784C550F7 /* Load_669.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_669.cpp"; path = "Load_669.cpp"; sourceTree = ""; }; + 5763666743B53D572CD47A67 /* Load_amf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_amf.cpp"; path = "Load_amf.cpp"; sourceTree = ""; }; + 8619EADD726BC1CD5B8AFEDD /* Load_ams.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ams.cpp"; path = "Load_ams.cpp"; sourceTree = ""; }; + 17D6E5F80328BDE8EC46FAF8 /* Load_c67.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_c67.cpp"; path = "Load_c67.cpp"; sourceTree = ""; }; + 1C5451F608A628E6F1C465F6 /* Load_dbm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dbm.cpp"; path = "Load_dbm.cpp"; sourceTree = ""; }; + E8D68A4C54664C375D622D4F /* Load_digi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_digi.cpp"; path = "Load_digi.cpp"; sourceTree = ""; }; + 1B954E5B07E7254BF005635B /* Load_dmf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dmf.cpp"; path = "Load_dmf.cpp"; sourceTree = ""; }; + 0AC4B091F6158881DF34C591 /* Load_dsm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsm.cpp"; path = "Load_dsm.cpp"; sourceTree = ""; }; + 855AF850F1E9B93BFAE59A53 /* Load_dsym.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dsym.cpp"; path = "Load_dsym.cpp"; sourceTree = ""; }; + CF4C0C8FBB9EE37EA4BD208F /* Load_dtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_dtm.cpp"; path = "Load_dtm.cpp"; sourceTree = ""; }; + 65E5D7145137AF043A56EC14 /* Load_far.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_far.cpp"; path = "Load_far.cpp"; sourceTree = ""; }; + CC2A9D83B87C7473A19BB183 /* Load_fmt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_fmt.cpp"; path = "Load_fmt.cpp"; sourceTree = ""; }; + 7F66EF026BB8C6F254D70303 /* Load_gdm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_gdm.cpp"; path = "Load_gdm.cpp"; sourceTree = ""; }; + A5BC1BD8910EF3C77A2D30D8 /* Load_imf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_imf.cpp"; path = "Load_imf.cpp"; sourceTree = ""; }; + 68A5B415D469B3059DCFE3CF /* Load_it.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_it.cpp"; path = "Load_it.cpp"; sourceTree = ""; }; + 3A48A8BA269A7FAA0FB9BCBA /* Load_itp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_itp.cpp"; path = "Load_itp.cpp"; sourceTree = ""; }; + 434817612F9AEE5018B92B61 /* Load_mdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mdl.cpp"; path = "Load_mdl.cpp"; sourceTree = ""; }; + FEE598F3EA3770E3D356ADF3 /* Load_med.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_med.cpp"; path = "Load_med.cpp"; sourceTree = ""; }; + 047FB27FF0D0896FD9EFC67F /* Load_mid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mid.cpp"; path = "Load_mid.cpp"; sourceTree = ""; }; + BBCA7333A71C4B23903B8833 /* Load_mo3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mo3.cpp"; path = "Load_mo3.cpp"; sourceTree = ""; }; + 8E37F1FD7A89C8ED63A805FE /* Load_mod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mod.cpp"; path = "Load_mod.cpp"; sourceTree = ""; }; + FA9292D8E6E469C8CF03A7D8 /* Load_mt2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mt2.cpp"; path = "Load_mt2.cpp"; sourceTree = ""; }; + 179663BA03E83AAAEC0678BA /* Load_mtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mtm.cpp"; path = "Load_mtm.cpp"; sourceTree = ""; }; + 77F9E36EE31347102C3657A4 /* Load_mus_km.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_mus_km.cpp"; path = "Load_mus_km.cpp"; sourceTree = ""; }; + 7B85D09E67D7A78E50F6E49E /* Load_okt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_okt.cpp"; path = "Load_okt.cpp"; sourceTree = ""; }; + B820E91FA472C00F8D91FD1F /* Load_plm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_plm.cpp"; path = "Load_plm.cpp"; sourceTree = ""; }; + 18E520090437F8F8ED553509 /* Load_psm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_psm.cpp"; path = "Load_psm.cpp"; sourceTree = ""; }; + DBC74BAEC719239EB03860AE /* Load_ptm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ptm.cpp"; path = "Load_ptm.cpp"; sourceTree = ""; }; + 7F7FB83F6BD18F2F54F0CC3F /* Load_s3m.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_s3m.cpp"; path = "Load_s3m.cpp"; sourceTree = ""; }; + DFFE6B07CB5043F7B46F8007 /* Load_sfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_sfx.cpp"; path = "Load_sfx.cpp"; sourceTree = ""; }; + 8438A37B708A7A6B59A9B77B /* Load_stm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stm.cpp"; path = "Load_stm.cpp"; sourceTree = ""; }; + 80CD02516C1FDA40553E1751 /* Load_stp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_stp.cpp"; path = "Load_stp.cpp"; sourceTree = ""; }; + 64D9D395D0F33637191647CB /* Load_symmod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_symmod.cpp"; path = "Load_symmod.cpp"; sourceTree = ""; }; + FB85FE35E7D7D525D0F61236 /* Load_uax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_uax.cpp"; path = "Load_uax.cpp"; sourceTree = ""; }; + C4259BD3B07772C39996AFD3 /* Load_ult.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_ult.cpp"; path = "Load_ult.cpp"; sourceTree = ""; }; + 7F2A39BA6B7C10AA549B4DBA /* Load_wav.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_wav.cpp"; path = "Load_wav.cpp"; sourceTree = ""; }; + 0FEE0A0B7BB209FB44183AC5 /* Load_xm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Load_xm.cpp"; path = "Load_xm.cpp"; sourceTree = ""; }; + 5C053551C8BE9FFB511EBAD5 /* Loaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Loaders.h"; path = "Loaders.h"; sourceTree = ""; }; + 6785B21F5302A6627C7FA676 /* MIDIEvents.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIEvents.cpp"; path = "MIDIEvents.cpp"; sourceTree = ""; }; + 6E4C21795A9EF86843BD3579 /* MIDIEvents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIEvents.h"; path = "MIDIEvents.h"; sourceTree = ""; }; + 7BE6C98A6763BDCD90E0BDE1 /* MIDIMacros.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MIDIMacros.cpp"; path = "MIDIMacros.cpp"; sourceTree = ""; }; + 90E5528D7C372A7D6556678D /* MIDIMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MIDIMacros.h"; path = "MIDIMacros.h"; sourceTree = ""; }; + D9ED4312457D05FD4E79E614 /* MPEGFrame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MPEGFrame.cpp"; path = "MPEGFrame.cpp"; sourceTree = ""; }; + 20389CD88CFC9AC85562CB92 /* MPEGFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MPEGFrame.h"; path = "MPEGFrame.h"; sourceTree = ""; }; + 8EF764C7FABB63B7C3219481 /* Message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Message.cpp"; path = "Message.cpp"; sourceTree = ""; }; + 15F89A5281B105FD0A1120D7 /* Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Message.h"; path = "Message.h"; sourceTree = ""; }; + 4631BEB2329984809B049996 /* MixFuncTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixFuncTable.cpp"; path = "MixFuncTable.cpp"; sourceTree = ""; }; + 0DFD03CEF979F71022F7F724 /* MixFuncTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixFuncTable.h"; path = "MixFuncTable.h"; sourceTree = ""; }; + B2BCAA171E2B00976714BB96 /* Mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Mixer.h"; path = "Mixer.h"; sourceTree = ""; }; + E517CDE1D17F93AF3AEBA7C5 /* MixerInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerInterface.h"; path = "MixerInterface.h"; sourceTree = ""; }; + BE848B1DAA017F60D37E7F74 /* MixerLoops.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerLoops.cpp"; path = "MixerLoops.cpp"; sourceTree = ""; }; + 1CFF639B08513B8BF16F789B /* MixerLoops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerLoops.h"; path = "MixerLoops.h"; sourceTree = ""; }; + 3DAAAE58A90F42DF32E8E3B7 /* MixerSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "MixerSettings.cpp"; path = "MixerSettings.cpp"; sourceTree = ""; }; + 849C09A3F0B66C4439D97CD8 /* MixerSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "MixerSettings.h"; path = "MixerSettings.h"; sourceTree = ""; }; + 045F6388F0DB56CB195957DF /* ModChannel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModChannel.cpp"; path = "ModChannel.cpp"; sourceTree = ""; }; + CB1AA5B1B76C7CA1A08BB9B1 /* ModChannel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModChannel.h"; path = "ModChannel.h"; sourceTree = ""; }; + FF1AA70A6B803A91F458DC69 /* ModInstrument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModInstrument.cpp"; path = "ModInstrument.cpp"; sourceTree = ""; }; + C6F44A3F320FAEE07B31BE74 /* ModInstrument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModInstrument.h"; path = "ModInstrument.h"; sourceTree = ""; }; + 2CE4D72698739911A16F7A29 /* ModSample.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSample.cpp"; path = "ModSample.cpp"; sourceTree = ""; }; + B37D08211F420711E8A737DB /* ModSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSample.h"; path = "ModSample.h"; sourceTree = ""; }; + 90A75BB3FCC1BE5445E4CEE8 /* ModSampleCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSampleCopy.h"; path = "ModSampleCopy.h"; sourceTree = ""; }; + 20D734048CF197A5D513A839 /* ModSequence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ModSequence.cpp"; path = "ModSequence.cpp"; sourceTree = ""; }; + 279C5659932B18449C27F95B /* ModSequence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ModSequence.h"; path = "ModSequence.h"; sourceTree = ""; }; + D60758F44276AD738B5F6873 /* OPL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OPL.cpp"; path = "OPL.cpp"; sourceTree = ""; }; + 5D055134C9E85F74D2EB8DB0 /* OPL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OPL.h"; path = "OPL.h"; sourceTree = ""; }; + D88489B544144BA04D102CB8 /* OggStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "OggStream.cpp"; path = "OggStream.cpp"; sourceTree = ""; }; + 96B13BD202763AC2CBDB6A8C /* OggStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OggStream.h"; path = "OggStream.h"; sourceTree = ""; }; + 3DCE6F7FA987DA2932E7F403 /* Paula.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Paula.cpp"; path = "Paula.cpp"; sourceTree = ""; }; + 841E48B2F08C9D3139765831 /* Paula.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Paula.h"; path = "Paula.h"; sourceTree = ""; }; + BE1400C42AD9FEB3F33E2F7E /* Resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Resampler.h"; path = "Resampler.h"; sourceTree = ""; }; + 5858A90E44D59C516D529D65 /* RowVisitor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "RowVisitor.cpp"; path = "RowVisitor.cpp"; sourceTree = ""; }; + 3624E46B2276BB5B0B95F86B /* RowVisitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "RowVisitor.h"; path = "RowVisitor.h"; sourceTree = ""; }; + 8F99FC9A7BEBD38A640A119B /* S3MTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "S3MTools.cpp"; path = "S3MTools.cpp"; sourceTree = ""; }; + 16CE421702B5040FAB056B2C /* S3MTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "S3MTools.h"; path = "S3MTools.h"; sourceTree = ""; }; + E09B95BF4C0C9838152B12C1 /* SampleFormatBRR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatBRR.cpp"; path = "SampleFormatBRR.cpp"; sourceTree = ""; }; + 5289B72D3E0708C727FFC55E /* SampleFormatFLAC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatFLAC.cpp"; path = "SampleFormatFLAC.cpp"; sourceTree = ""; }; + 457124B5B1E1262E7A00A1B6 /* SampleFormatMP3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMP3.cpp"; path = "SampleFormatMP3.cpp"; sourceTree = ""; }; + 0E1850967A8A92B2C31EC836 /* SampleFormatMediaFoundation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatMediaFoundation.cpp"; path = "SampleFormatMediaFoundation.cpp"; sourceTree = ""; }; + 809B76856C19C71E551185B6 /* SampleFormatOpus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatOpus.cpp"; path = "SampleFormatOpus.cpp"; sourceTree = ""; }; + CEEE1AF83A5F1D71037E97F9 /* SampleFormatSFZ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatSFZ.cpp"; path = "SampleFormatSFZ.cpp"; sourceTree = ""; }; + 72F466285E9DCE578733EAD6 /* SampleFormatVorbis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormatVorbis.cpp"; path = "SampleFormatVorbis.cpp"; sourceTree = ""; }; + 4905B7C9B56A4A503E43EC28 /* SampleFormats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleFormats.cpp"; path = "SampleFormats.cpp"; sourceTree = ""; }; + 27A6836F13F85A5FFC16986F /* SampleIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SampleIO.cpp"; path = "SampleIO.cpp"; sourceTree = ""; }; + AED4EDD49ABBAFCC430C16EA /* SampleIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SampleIO.h"; path = "SampleIO.h"; sourceTree = ""; }; + 1CF3716B08DA3363B12A9A80 /* Snd_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Snd_defs.h"; path = "Snd_defs.h"; sourceTree = ""; }; + 7D71C386E935C276B29BF240 /* Snd_flt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_flt.cpp"; path = "Snd_flt.cpp"; sourceTree = ""; }; + 6E26634B5A0D2543035E8B60 /* Snd_fx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Snd_fx.cpp"; path = "Snd_fx.cpp"; sourceTree = ""; }; + 732F922ADFF3901AA859C1E4 /* Sndfile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndfile.cpp"; path = "Sndfile.cpp"; sourceTree = ""; }; + BAF2DE1426AC49BFAF0B6499 /* Sndfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Sndfile.h"; path = "Sndfile.h"; sourceTree = ""; }; + 85392DCF7120EFC61A7155E4 /* Sndmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Sndmix.cpp"; path = "Sndmix.cpp"; sourceTree = ""; }; + A91DFCF615E458135E3FE775 /* SoundFilePlayConfig.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SoundFilePlayConfig.cpp"; path = "SoundFilePlayConfig.cpp"; sourceTree = ""; }; + 3EEBE378AA26443CB31BC1CB /* SoundFilePlayConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SoundFilePlayConfig.h"; path = "SoundFilePlayConfig.h"; sourceTree = ""; }; + 21C53F500DAC0148B6FC6765 /* Tables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tables.cpp"; path = "Tables.cpp"; sourceTree = ""; }; + A8A4F0A194E0F30BFDF20B03 /* Tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tables.h"; path = "Tables.h"; sourceTree = ""; }; + 4BEBF812B7AFF702801528CD /* Tagging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Tagging.cpp"; path = "Tagging.cpp"; sourceTree = ""; }; + 92D834D0FE919F7A87F1B954 /* Tagging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Tagging.h"; path = "Tagging.h"; sourceTree = ""; }; + 296C1CDD95301BCD5E964B97 /* TinyFFT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "TinyFFT.cpp"; path = "TinyFFT.cpp"; sourceTree = ""; }; + F08926175C4391C1E5A2AB9B /* TinyFFT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "TinyFFT.h"; path = "TinyFFT.h"; sourceTree = ""; }; + D42F6A6DC081415DA9A07E6D /* UMXTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UMXTools.cpp"; path = "UMXTools.cpp"; sourceTree = ""; }; + 1B0F5CBE07F61DB6B04684D3 /* UMXTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UMXTools.h"; path = "UMXTools.h"; sourceTree = ""; }; + 7B05F1FAE76A84817043265A /* UpgradeModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "UpgradeModule.cpp"; path = "UpgradeModule.cpp"; sourceTree = ""; }; + E5DEC734D1309F24BA4FDC34 /* WAVTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WAVTools.cpp"; path = "WAVTools.cpp"; sourceTree = ""; }; + ECC5B05DD8AC725581FDD872 /* WAVTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WAVTools.h"; path = "WAVTools.h"; sourceTree = ""; }; + EC12C2A4582D2546A14F35DA /* WindowedFIR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WindowedFIR.cpp"; path = "WindowedFIR.cpp"; sourceTree = ""; }; + F3748A1D5F044C0868002D20 /* WindowedFIR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WindowedFIR.h"; path = "WindowedFIR.h"; sourceTree = ""; }; + 64F93AC4D0BD39B499236A7E /* XMTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "XMTools.cpp"; path = "XMTools.cpp"; sourceTree = ""; }; + E240B5764EFA1F21D7593AFB /* XMTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "XMTools.h"; path = "XMTools.h"; sourceTree = ""; }; + 06F4DC88F245B478DB64F188 /* load_j2b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "load_j2b.cpp"; path = "load_j2b.cpp"; sourceTree = ""; }; + 9EE9FE588A926688B3288207 /* mod_specifications.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "mod_specifications.cpp"; path = "mod_specifications.cpp"; sourceTree = ""; }; + E51808F3D196588CBA8E1624 /* mod_specifications.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mod_specifications.h"; path = "mod_specifications.h"; sourceTree = ""; }; + 4E3CBD933AB9B0D66336B1EA /* modcommand.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modcommand.cpp"; path = "modcommand.cpp"; sourceTree = ""; }; + AC92A20798E479F78103B707 /* modcommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modcommand.h"; path = "modcommand.h"; sourceTree = ""; }; + AEA171F21ABCD49363DEE427 /* modsmp_ctrl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "modsmp_ctrl.cpp"; path = "modsmp_ctrl.cpp"; sourceTree = ""; }; + 356B2321A1FAE40BAAF6C523 /* modsmp_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "modsmp_ctrl.h"; path = "modsmp_ctrl.h"; sourceTree = ""; }; + FF6B08FBEBBCF33C1421E2FE /* opal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "opal.h"; path = "opal.h"; sourceTree = ""; }; + 4E33DC6DBAF7DA5D835D0B28 /* pattern.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "pattern.cpp"; path = "pattern.cpp"; sourceTree = ""; }; + 4CF80A74B8B1751E411190F8 /* pattern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "pattern.h"; path = "pattern.h"; sourceTree = ""; }; + 2CD09BE2184EEC7B0146AA13 /* patternContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "patternContainer.cpp"; path = "patternContainer.cpp"; sourceTree = ""; }; + 731B98FE5F2E985708187544 /* patternContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "patternContainer.h"; path = "patternContainer.h"; sourceTree = ""; }; + FB844A6967A13C5A3079A9C7 /* DigiBoosterEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DigiBoosterEcho.cpp"; path = "DigiBoosterEcho.cpp"; sourceTree = ""; }; + B94C55CD255EFD73AEAF8FB3 /* DigiBoosterEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DigiBoosterEcho.h"; path = "DigiBoosterEcho.h"; sourceTree = ""; }; + ACAFEFF218EB4FB621E0CC45 /* LFOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "LFOPlugin.cpp"; path = "LFOPlugin.cpp"; sourceTree = ""; }; + 330BA2329F7BA4AB689A1E34 /* LFOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "LFOPlugin.h"; path = "LFOPlugin.h"; sourceTree = ""; }; + 3289175E9EEEAAE427C74CBD /* OpCodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OpCodes.h"; path = "OpCodes.h"; sourceTree = ""; }; + 0B2F79D67740217D0092B3BC /* PlugInterface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PlugInterface.cpp"; path = "PlugInterface.cpp"; sourceTree = ""; }; + 89F0F5FAF5B652173E12E179 /* PlugInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PlugInterface.h"; path = "PlugInterface.h"; sourceTree = ""; }; + C7D6FC9A33E8A441BC393781 /* PluginManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "PluginManager.cpp"; path = "PluginManager.cpp"; sourceTree = ""; }; + 8EC05A9BFA86B7B743E2451A /* PluginManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginManager.h"; path = "PluginManager.h"; sourceTree = ""; }; + 9D8CD877099E801E92EF125E /* PluginMixBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginMixBuffer.h"; path = "PluginMixBuffer.h"; sourceTree = ""; }; + EF376D1A5BFEC936A4595899 /* PluginStructs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PluginStructs.h"; path = "PluginStructs.h"; sourceTree = ""; }; + 54A183C0404AEBEF69E0066F /* SymMODEcho.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "SymMODEcho.cpp"; path = "SymMODEcho.cpp"; sourceTree = ""; }; + 1B6B6FA307E9BF3CF0E07DD4 /* SymMODEcho.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SymMODEcho.h"; path = "SymMODEcho.h"; sourceTree = ""; }; + C4E70722B0906F51D9268BD0 /* Chorus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Chorus.cpp"; path = "Chorus.cpp"; sourceTree = ""; }; + 8B554F0D77D39FA660CB5D3E /* Chorus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Chorus.h"; path = "Chorus.h"; sourceTree = ""; }; + 41E409EF2D23B46AD6A5909C /* Compressor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Compressor.cpp"; path = "Compressor.cpp"; sourceTree = ""; }; + 5F0FF7854BA3EC2DB46746E2 /* Compressor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Compressor.h"; path = "Compressor.h"; sourceTree = ""; }; + DE1112E34A23BA89D3744CC9 /* DMOPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOPlugin.cpp"; path = "DMOPlugin.cpp"; sourceTree = ""; }; + E549E809511045269A6BD388 /* DMOPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOPlugin.h"; path = "DMOPlugin.h"; sourceTree = ""; }; + 8484D9DE7018CF86D9DC283B /* DMOUtils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "DMOUtils.cpp"; path = "DMOUtils.cpp"; sourceTree = ""; }; + CBCA9485B773FCB4E0091834 /* DMOUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "DMOUtils.h"; path = "DMOUtils.h"; sourceTree = ""; }; + 54CBC7A2400A721EE98C4E50 /* Distortion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Distortion.cpp"; path = "Distortion.cpp"; sourceTree = ""; }; + 1B46492F07DA3ED7709E988B /* Distortion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Distortion.h"; path = "Distortion.h"; sourceTree = ""; }; + 2893628C1411B325FD0871BD /* Echo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Echo.cpp"; path = "Echo.cpp"; sourceTree = ""; }; + 6FEF99205B029A7904EC7666 /* Echo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Echo.h"; path = "Echo.h"; sourceTree = ""; }; + EC8D4BB45854A8D0A1AF3633 /* Flanger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Flanger.cpp"; path = "Flanger.cpp"; sourceTree = ""; }; + EA70EA5456AC4A185FA1C7A7 /* Flanger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Flanger.h"; path = "Flanger.h"; sourceTree = ""; }; + FA2F3B8AE6D8A2B90F6FBE38 /* Gargle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "Gargle.cpp"; path = "Gargle.cpp"; sourceTree = ""; }; + 411887C82D96D761168E95F9 /* Gargle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Gargle.h"; path = "Gargle.h"; sourceTree = ""; }; + 3093C85D9CAFBA4E658727BC /* I3DL2Reverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "I3DL2Reverb.cpp"; path = "I3DL2Reverb.cpp"; sourceTree = ""; }; + 378775ABA3981D522CEAAF91 /* I3DL2Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "I3DL2Reverb.h"; path = "I3DL2Reverb.h"; sourceTree = ""; }; + 8EC2AA59FA88077643E495D8 /* ParamEq.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ParamEq.cpp"; path = "ParamEq.cpp"; sourceTree = ""; }; + 15F6F9FD81315AC18A26D750 /* ParamEq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ParamEq.h"; path = "ParamEq.h"; sourceTree = ""; }; + 17463232836224234C3A9190 /* WavesReverb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "WavesReverb.cpp"; path = "WavesReverb.cpp"; sourceTree = ""; }; + 5E543748CA65DFEE53B7712E /* WavesReverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "WavesReverb.h"; path = "WavesReverb.h"; sourceTree = ""; }; + C4C5B491B0AC768959FDDCA6 /* tuning.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuning.cpp"; path = "tuning.cpp"; sourceTree = ""; }; + 22A201180EDE048277F01C79 /* tuning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuning.h"; path = "tuning.h"; sourceTree = ""; }; + 4BA23431372085CA20184362 /* tuningCollection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "tuningCollection.cpp"; path = "tuningCollection.cpp"; sourceTree = ""; }; + 412D19EF2D7FF0DE169E2DEF /* tuningbase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningbase.h"; path = "tuningbase.h"; sourceTree = ""; }; + 74A9B22760BCB28009A68F6D /* tuningcollection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "tuningcollection.h"; path = "tuningcollection.h"; sourceTree = ""; }; + C8D83AE1343ECE67BD167040 /* algorithm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "algorithm.hpp"; path = "algorithm.hpp"; sourceTree = ""; }; + AE2D12DB1ABDD3C523B9B4DD /* alloc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "alloc.hpp"; path = "alloc.hpp"; sourceTree = ""; }; + 2C83CD5C1817C30481DB1CB9 /* arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "arithmetic_shift.hpp"; path = "arithmetic_shift.hpp"; sourceTree = ""; }; + C6C8B4D9325876C43B5457DC /* array.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "array.hpp"; path = "array.hpp"; sourceTree = ""; }; + 5F0AC635CBCEC4259434F5EF /* bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "bit.hpp"; path = "bit.hpp"; sourceTree = ""; }; + A410AA6490B91194B94F2D13 /* check_platform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "check_platform.hpp"; path = "check_platform.hpp"; sourceTree = ""; }; + B1AEFC671DCBEE58E6A25BC6 /* compiletime_warning.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "compiletime_warning.hpp"; path = "compiletime_warning.hpp"; sourceTree = ""; }; + 1FB774638B7DD17FD4D85FE2 /* constexpr_throw.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "constexpr_throw.hpp"; path = "constexpr_throw.hpp"; sourceTree = ""; }; + A1D4208A8D5114CDB6CE14E1 /* detect.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect.hpp"; path = "detect.hpp"; sourceTree = ""; }; + F4F56CD960BCC9F5A9175858 /* detect_compiler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_compiler.hpp"; path = "detect_compiler.hpp"; sourceTree = ""; }; + D5B53E0F412641880A45BB10 /* detect_libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libc.hpp"; path = "detect_libc.hpp"; sourceTree = ""; }; + C7BE1EAB33FA7E6E3CEFFBFD /* detect_libcxx.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_libcxx.hpp"; path = "detect_libcxx.hpp"; sourceTree = ""; }; + 417B383AADE0CBC036B96D99 /* detect_os.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_os.hpp"; path = "detect_os.hpp"; sourceTree = ""; }; + 60D6116ACC11722DD506EFBC /* detect_quirks.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "detect_quirks.hpp"; path = "detect_quirks.hpp"; sourceTree = ""; }; + 207E3D6D8CB99D3095AE1AC0 /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 521EADD8BE38107A075B200E /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + EB8F06BED70CFA00008AFA14 /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + B230D6779E82AD6787A1EA77 /* math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "math.hpp"; path = "math.hpp"; sourceTree = ""; }; + E3C619D9CF430D1CF8C00D30 /* memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "memory.hpp"; path = "memory.hpp"; sourceTree = ""; }; + 90676081FCCCF30785A595E0 /* namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "namespace.hpp"; path = "namespace.hpp"; sourceTree = ""; }; + D890886444ABEB058DCDFB99 /* numeric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "numeric.hpp"; path = "numeric.hpp"; sourceTree = ""; }; + 88D7487BF4F1AB1C3D14BCB0 /* pointer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "pointer.hpp"; path = "pointer.hpp"; sourceTree = ""; }; + 107C4246FCF992DFE5F15077 /* preprocessor.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "preprocessor.hpp"; path = "preprocessor.hpp"; sourceTree = ""; }; + 7E5D27C1EA988784F38D0414 /* saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_cast.hpp"; path = "saturate_cast.hpp"; sourceTree = ""; }; + 74338A1960DCF14889720DC8 /* saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "saturate_round.hpp"; path = "saturate_round.hpp"; sourceTree = ""; }; + 4DE0AE57395DA29A62DAA2AE /* secure.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "secure.hpp"; path = "secure.hpp"; sourceTree = ""; }; + 21BC96400D508CE87614E69C /* semantic_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "semantic_version.hpp"; path = "semantic_version.hpp"; sourceTree = ""; }; + 532BE545BFF14162084DD0C4 /* source_location.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "source_location.hpp"; path = "source_location.hpp"; sourceTree = ""; }; + 9ECD7E188A1F5608733E9318 /* span.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "span.hpp"; path = "span.hpp"; sourceTree = ""; }; + B220E66A1E8A7BCDA7CD2978 /* tests_base_arithmetic_shift.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_arithmetic_shift.hpp"; path = "tests_base_arithmetic_shift.hpp"; sourceTree = ""; }; + 6C1695ED58C0CAFC4191D217 /* tests_base_bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_bit.hpp"; path = "tests_base_bit.hpp"; sourceTree = ""; }; + 59102DB7C5F717ADCEE51929 /* tests_base_math.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_math.hpp"; path = "tests_base_math.hpp"; sourceTree = ""; }; + 04CD2A2AF0CDBEA419962B29 /* tests_base_saturate_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_cast.hpp"; path = "tests_base_saturate_cast.hpp"; sourceTree = ""; }; + 23EA70F68F0885C3D8D58AD5 /* tests_base_saturate_round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_saturate_round.hpp"; path = "tests_base_saturate_round.hpp"; sourceTree = ""; }; + 8802D44F74EE6BBFDD642B12 /* tests_base_wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_base_wrapping_divide.hpp"; path = "tests_base_wrapping_divide.hpp"; sourceTree = ""; }; + 74C443CAE0DEA66B2901B7FF /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 48C43AE9B4DE9D8AFD00AE1E /* version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "version.hpp"; path = "version.hpp"; sourceTree = ""; }; + A0160B270CDD67435538F6A5 /* wrapping_divide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "wrapping_divide.hpp"; path = "wrapping_divide.hpp"; sourceTree = ""; }; + 4D7EC34B39E68919A2519E2F /* base64.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64.hpp"; path = "base64.hpp"; sourceTree = ""; }; + E23113E34EA2155C17C18FE4 /* base64url.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "base64url.hpp"; path = "base64url.hpp"; sourceTree = ""; }; + 91E6DDC4FD759FAF067280C7 /* hex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hex.hpp"; path = "hex.hpp"; sourceTree = ""; }; + 686844B754127AC63DE381E1 /* tests_binary.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_binary.hpp"; path = "tests_binary.hpp"; sourceTree = ""; }; + FC98C9E068288BCB71246CE3 /* libc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "libc.hpp"; path = "libc.hpp"; sourceTree = ""; }; + 1AA8475B06FA1E4BEF185C5B /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + 11B1C905FD1890D36684A4E9 /* windows.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows.hpp"; path = "windows.hpp"; sourceTree = ""; }; + 3BBCE0F827A3A2F0D0F3080E /* crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crc.hpp"; path = "crc.hpp"; sourceTree = ""; }; + C9CDD777B5763FA7DE0C5B26 /* tests_crc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crc.hpp"; path = "tests_crc.hpp"; sourceTree = ""; }; + 383FD9F9A4AFDB726DCE55FB /* exception.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception.hpp"; path = "exception.hpp"; sourceTree = ""; }; + EF49E2F2DBC6D5350444D649 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "hash.hpp"; path = "hash.hpp"; sourceTree = ""; }; + 7922327FE5B1F369EEADD481 /* jwk.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "jwk.hpp"; path = "jwk.hpp"; sourceTree = ""; }; + FC9CBB2BE846F13AD117F955 /* tests_crypto.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_crypto.hpp"; path = "tests_crypto.hpp"; sourceTree = ""; }; + 38B85F9EA4472189AD4302A1 /* mfc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mfc.hpp"; path = "mfc.hpp"; sourceTree = ""; }; + 38BA5C18A480B934EDDB4797 /* nlohmann_json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "nlohmann_json.hpp"; path = "nlohmann_json.hpp"; sourceTree = ""; }; + 3BF71195A7BD6EB1F018FD13 /* floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "floatingpoint.hpp"; path = "floatingpoint.hpp"; sourceTree = ""; }; + 249351A190F8E42719D18600 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "integer.hpp"; path = "integer.hpp"; sourceTree = ""; }; + 99950A86852C4D3B2EE1C33B /* tests_endian_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_floatingpoint.hpp"; path = "tests_endian_floatingpoint.hpp"; sourceTree = ""; }; + 4B9CFB3337728231201C9D84 /* tests_endian_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_endian_integer.hpp"; path = "tests_endian_integer.hpp"; sourceTree = ""; }; + 99C6469B8505F1162E88CD48 /* environment.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "environment.hpp"; path = "environment.hpp"; sourceTree = ""; }; + EF07816EDBC7111344E5F91D /* exception_text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "exception_text.hpp"; path = "exception_text.hpp"; sourceTree = ""; }; + 1750259C83C267B8CC569D3C /* default_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_floatingpoint.hpp"; path = "default_floatingpoint.hpp"; sourceTree = ""; }; + 0F5372197B6F640A4447D177 /* default_formatter.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_formatter.hpp"; path = "default_formatter.hpp"; sourceTree = ""; }; + CB369E23374846CAC099D809 /* default_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_integer.hpp"; path = "default_integer.hpp"; sourceTree = ""; }; + 2D5B373F19EF2CE782B3869B /* default_string.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_string.hpp"; path = "default_string.hpp"; sourceTree = ""; }; + A7E993BB134F27429C27C91A /* helpers.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "helpers.hpp"; path = "helpers.hpp"; sourceTree = ""; }; + 1B96D63C87FB69C310D40B9C /* message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message.hpp"; path = "message.hpp"; sourceTree = ""; }; + C1FC9ACBAD9090731655EA27 /* message_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "message_macros.hpp"; path = "message_macros.hpp"; sourceTree = ""; }; + 84373932709FFFFFD90A1416 /* simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple.hpp"; path = "simple.hpp"; sourceTree = ""; }; + 7A680999663D514C8FEC9048 /* simple_floatingpoint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_floatingpoint.hpp"; path = "simple_floatingpoint.hpp"; sourceTree = ""; }; + 6C873621581B2CC9C1DF857D /* simple_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_integer.hpp"; path = "simple_integer.hpp"; sourceTree = ""; }; + 0BA1026A77DC622D80D1DFBC /* simple_spec.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "simple_spec.hpp"; path = "simple_spec.hpp"; sourceTree = ""; }; + 1B77EE03074D7501F0F68F54 /* tests_format_message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_message.hpp"; path = "tests_format_message.hpp"; sourceTree = ""; }; + 421E02E0AEE6CF637777D875 /* tests_format_simple.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_format_simple.hpp"; path = "tests_format_simple.hpp"; sourceTree = ""; }; + F8F7E0CBE449B8BBCD68F5CB /* json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "json.hpp"; path = "json.hpp"; sourceTree = ""; }; + CD7F285BB9FC1B9EE2791CB2 /* mutex.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "mutex.hpp"; path = "mutex.hpp"; sourceTree = ""; }; + 8845F536F4569DDD7DA82F1D /* windows_version.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "windows_version.hpp"; path = "windows_version.hpp"; sourceTree = ""; }; + 4C10F0FB38E537AF619477AB /* out_of_memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "out_of_memory.hpp"; path = "out_of_memory.hpp"; sourceTree = ""; }; + 3DEE388F296B2CD252E82CE6 /* parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "parse.hpp"; path = "parse.hpp"; sourceTree = ""; }; + F44EB7FAE08D617689103EA8 /* tests_parse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_parse.hpp"; path = "tests_parse.hpp"; sourceTree = ""; }; + 4D400B14B95A6EB5027D7E49 /* crand.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "crand.hpp"; path = "crand.hpp"; sourceTree = ""; }; + 34206415A0310CBC29839EFB /* default_engines.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "default_engines.hpp"; path = "default_engines.hpp"; sourceTree = ""; }; + B902D65EA56A9C2C0ED6B042 /* device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "device.hpp"; path = "device.hpp"; sourceTree = ""; }; + 61A63F304D0E06FEB6791A14 /* engine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine.hpp"; path = "engine.hpp"; sourceTree = ""; }; + 98CF021D844D53B66D45114E /* engine_lcg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "engine_lcg.hpp"; path = "engine_lcg.hpp"; sourceTree = ""; }; + 07C31E48F32AE5155C96F92B /* random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "random.hpp"; path = "random.hpp"; sourceTree = ""; }; + C9EE001BB56BF45DDEE8F471 /* seed.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "seed.hpp"; path = "seed.hpp"; sourceTree = ""; }; + 009F1149EC484758D5194F73 /* tests_random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_random.hpp"; path = "tests_random.hpp"; sourceTree = ""; }; + BEE08A50AA48511E13B46534 /* buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "buffer.hpp"; path = "buffer.hpp"; sourceTree = ""; }; + 829CEFD9EE64BD5DB7F5C56F /* tests_string_buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_buffer.hpp"; path = "tests_string_buffer.hpp"; sourceTree = ""; }; + FED8A4F7EAAE2BF5D3584648 /* tests_string_utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_utility.hpp"; path = "tests_string_utility.hpp"; sourceTree = ""; }; + 57D58DC2C3EFF0630C1201F8 /* types.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "types.hpp"; path = "types.hpp"; sourceTree = ""; }; + D8CCA06E443234F5CD0AD6CD /* utility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "utility.hpp"; path = "utility.hpp"; sourceTree = ""; }; + 7F2DA6AFEB3E4E567490E095 /* convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "convert.hpp"; path = "convert.hpp"; sourceTree = ""; }; + C5E1A3C5B175996D1A3AF321 /* macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "macros.hpp"; path = "macros.hpp"; sourceTree = ""; }; + 6E4685C95A48C9D943CBBFD2 /* tests_string_convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_string_convert.hpp"; path = "tests_string_convert.hpp"; sourceTree = ""; }; + 0BF64FA0F79F85AFE0708DCA /* system_error.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "system_error.hpp"; path = "system_error.hpp"; sourceTree = ""; }; + 89F40CFB7546E4EA5E6521FB /* test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test.hpp"; path = "test.hpp"; sourceTree = ""; }; + 2FEA2ACD9B5A2D466479A7CE /* test_macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "test_macros.hpp"; path = "test_macros.hpp"; sourceTree = ""; }; + CE121DFCBA64F4EBA38331FC /* guid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "guid.hpp"; path = "guid.hpp"; sourceTree = ""; }; + D392487ABF263E2228EB97D6 /* tests_uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid.hpp"; path = "tests_uuid.hpp"; sourceTree = ""; }; + F854942DE4A66B1DCDC5A82D /* uuid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "uuid.hpp"; path = "uuid.hpp"; sourceTree = ""; }; + 08A98847F4AACC57DD2DC350 /* tests_uuid_namespace.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = "tests_uuid_namespace.hpp"; path = "tests_uuid_namespace.hpp"; sourceTree = ""; }; + 9624282C82E4B8D0EB01A1DB /* 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 +797,7 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 824FCF41EE19A19C3720A0C1 /* Frameworks */ = { + 8516F1A8F1E0C2033AE7C128 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -622,12 +814,13 @@ isa = PBXGroup; children = ( 6C4F0095D8BBBB8FA1AF53ED /* common */, - BFD4FDA32BE22B8AB4C82775 /* libopenmpt */, - 4FEAB79B3BFA636CA4B3C88A /* soundbase */, - 5A30E327C6F216B20FA3A53E /* sounddsp */, - E961CB335524FFBD9ED48D4A /* soundlib */, - 9E6A03080A2D379253DDC51E /* Products */, - B533D44521F607D06AA6965C /* Projects */, + BCF3358A28016470B1E75F5B /* libopenmpt */, + AC9DB9C198AD65920167CAB0 /* soundbase */, + 176C9D76832ED100CCDE5F8D /* sounddsp */, + EF39A81C5BFCDBA6A4AC6A33 /* soundlib */, + 989CAF37842B39012D4A4DFC /* src */, + EADBDCA4569E102F9F4E9FBB /* Products */, + B8088B4824CBBED26D7B4D5F /* Projects */, ); name = "libopenmpt"; path = "."; @@ -637,339 +830,758 @@ isa = PBXGroup; children = ( B3EA35381FAF3428E81465F2 /* BuildSettings.h */, - C8BB03B6B40DDBA59D2C18B6 /* CompilerDetect.h */, - DF79CCBECBE1928C344DA7A2 /* ComponentManager.cpp */, - 0DE7DDE97901418BC223511F /* ComponentManager.h */, - 29C2B344957B1EEF1EDB38C9 /* Endianness.h */, - 7188A7C7DD4CA6B7A6B2D681 /* FileReader.cpp */, - 789C40CDE455AB776DB5C551 /* FileReader.h */, - DB7781B2C7C958A2B0E895B2 /* FileReaderFwd.h */, - 469D619132EE4CD35B523B95 /* FlagSet.h */, - C444C007B080C3711993DB68 /* Logging.cpp */, - 4B472BF53798163760FC04F9 /* Logging.h */, - 242D314090E69BEA1946B6C4 /* Profiler.cpp */, - EB2F52B3579EA732A0876232 /* Profiler.h */, - 45347CD8311B3ED0DA6BA4ED /* misc_util.cpp */, - 0C9B7D60F8D680CA61E998C1 /* misc_util.h */, - C1D8BBFD2D47117D7630CC7C /* mptAlloc.h */, - 8A4F1515768B187FDF9D3076 /* mptAssert.h */, - 7AFA3D21664C15114F6B5221 /* mptBaseMacros.h */, - C38BA8062F50A7F6F8B5D7C0 /* mptBaseTypes.h */, - 016662BA6D2A61AA36909174 /* mptBaseUtils.h */, - 0FED58597BD0679984D395D5 /* mptCRC.h */, - 48006EA3B4C46C937D2A9D5D /* mptException.h */, - 8FBD12C8FBD7756944FA85FD /* mptExceptionText.h */, - 87F8F9C673DFBBBE1C3022DC /* mptFileIO.cpp */, - CE66D9C8BAA2DC3223B5F429 /* mptFileIO.h */, - 8BB5029B7706EEDCA06ADC9E /* mptIO.cpp */, - D2C19A61BEE764C8A72DEA93 /* mptIO.h */, - 6CE42646D8A82536A10E5600 /* mptLibrary.cpp */, - 0A01842376BAEECDFF1909A8 /* mptLibrary.h */, - B090B9769CCCBCE005DFD4D7 /* mptMemory.h */, - ECA9A22F5818F8AEA101B3AE /* mptMutex.h */, - D81B905BC46C7B9DEDD0695F /* mptOS.cpp */, - DF3010EFCB56DA55B49C5F21 /* mptOS.h */, - 42EAD35FAEA33E0A370359E4 /* mptOSError.h */, - A92ACF5915BA90441EB6715C /* mptOSException.h */, - 79EBBC0F6568B0528EE5B066 /* mptPathString.cpp */, - 40C6EBAA2C18C39A153700AB /* mptPathString.h */, - 3A2051662607135ECF57797B /* mptRandom.cpp */, - 38BA47EA24F64A548D08634B /* mptRandom.h */, - ABB43B489705278AC069154C /* mptSpan.h */, - 4DCE2ABD39B5ECB4E20553D2 /* mptString.cpp */, - 14132ED7004F314169614938 /* mptString.h */, - 8BC5B2E4772D79B2E0988DC8 /* mptStringBuffer.cpp */, - 097E1645F5FA09881E780A9C /* mptStringBuffer.h */, - 355A76D121C23C9F8A2D51B5 /* mptStringFormat.cpp */, - 7CEEB443686BA88691E8A89A /* mptStringFormat.h */, - 0BAA820277C4E5A3C0E6F537 /* mptStringParse.cpp */, - 928059B2FE0F1B9D070CFCB4 /* mptStringParse.h */, - F8E2355B649CA005EDFBBADF /* mptThread.h */, - 0CC952A87882BD5201E2D72C /* mptTime.cpp */, - 9319403DFF8795BC487150BC /* mptTime.h */, - 18FB305284B49BFC0D14B6D6 /* mptUUID.cpp */, - 9F5892890BC7E70854B0A208 /* mptUUID.h */, - 990A32C5054692880E3B0F18 /* serialization_utils.cpp */, - E0C6C6E84C37C961155643EA /* serialization_utils.h */, - 7E6F72886AC05DCA93244C8C /* stdafx.h */, - F784BBFA633E26A5EC9D407F /* version.cpp */, - BEDEE25B2A4D38DB7336F3DA /* version.h */, - 00C36B686C522D53754E0E6B /* versionNumber.h */, + 5DDA4225494209F3B2AD1D09 /* ComponentManager.cpp */, + E41C930DD0998650F9168764 /* ComponentManager.h */, + A78448B4133EB35E9C9DCD38 /* Endianness.h */, + 6FE2766FDBA6755FA40CA629 /* FileReader.cpp */, + F65ED53C621840E7EB775AC1 /* FileReader.h */, + 99113C54856313446E825054 /* FileReaderFwd.h */, + CD158EA1B96679E3E2CA67A5 /* FlagSet.h */, + 82AF67226EEB6A8CD7FD8283 /* Logging.cpp */, + 89EADC5C753BC89E9E9FB660 /* Logging.h */, + A2EFC5AF0EA9305A97084B34 /* Profiler.cpp */, + E93A381155A98D909E924890 /* Profiler.h */, + 4C98AFA3387F719BE1CFD7B8 /* misc_util.cpp */, + CA05257BB64128E51F5440DC /* misc_util.h */, + BFE3A15B2B52F7DA743BB2DA /* mptAlloc.h */, + 48BABC2F34F6BF999D08D890 /* mptAssert.h */, + 3894F8C224E6CFB20D050DC3 /* mptBaseMacros.h */, + AA70483816354728DF9A77F2 /* mptBaseTypes.h */, + FFBF31626B84305234EA601C /* mptBaseUtils.h */, + 4893B4B8347A76B0DDCADCCD /* mptFileIO.cpp */, + 4F5DFCE53B99FF4FA4AB1747 /* mptFileIO.h */, + CC1744E2B8682F24E1CC1DE6 /* mptIO.cpp */, + D39FEC8CBFC5B6F3A80B3CBF /* mptIO.h */, + 644C64E5D01063D59976939F /* mptLibrary.cpp */, + ABC705E51781708FA0E08A69 /* mptLibrary.h */, + 3187DC931DC3DFFD86D5F7F4 /* mptMemory.h */, + 4D54105FB9C265DE02AC20DE /* mptMutex.h */, + 197ED1A205CFBCE42E33ABA6 /* mptOS.cpp */, + D71F5F7EC34529E5AC8BAEB0 /* mptOS.h */, + 482B33D7B4BAF4C1BDB6D5D9 /* mptOSException.h */, + F8FFA039E47C947C0DFA9490 /* mptPathString.cpp */, + FFAE7297EB004A87D41F8797 /* mptPathString.h */, + 39CD38BA25B4FAB1CE0461CF /* mptRandom.cpp */, + 771B12226357158CCC692D83 /* mptRandom.h */, + 8A8D3F737674016B1FC56788 /* mptString.cpp */, + 11DF9F29FD1AA393662DBB8A /* mptString.h */, + 883EBBE474A681B2DD1196C8 /* mptStringBuffer.cpp */, + 0FA2BEADFB1EB2F0249CB204 /* mptStringBuffer.h */, + 32D37ED11E3B459F87A659B5 /* mptStringFormat.cpp */, + 39046168258154AB4EFE54BF /* mptStringFormat.h */, + 6877B1BCD491145E1DB424F2 /* mptStringParse.cpp */, + AF52CB081BE28CF324DE6D0B /* mptStringParse.h */, + 9798AB1383D4AE7DECE6C674 /* mptThread.h */, + 223343AE0E6F461877815E0F /* mptTime.cpp */, + 2906C3D61557AE183EBB9CDA /* mptTime.h */, + 2E6521581AA124C283B33CB9 /* mptUUID.cpp */, + 35451523219600654AFAEE26 /* mptUUID.h */, + B826E652A4A436EC8D9CF483 /* serialization_utils.cpp */, + 1D73D10C89E3D38552024E0E /* serialization_utils.h */, + 9B74965A87C5819CB029705E /* stdafx.h */, + F4502D4D600A98F7E969B2D1 /* version.cpp */, + 7B878772E7F5DCF130DF97F1 /* version.h */, + 862D8FBAF2BC50A5FBB831BD /* versionNumber.h */, ); name = "common"; path = "../../common"; sourceTree = ""; }; - BFD4FDA32BE22B8AB4C82775 /* libopenmpt */ = { + BCF3358A28016470B1E75F5B /* libopenmpt */ = { isa = PBXGroup; children = ( - FF7D561FEBFA496214784A76 /* libopenmpt.h */, - A12227FB8D8AEDC8F6F501DF /* libopenmpt.hpp */, - E0A38FA6CCB68FFF75A06CEC /* libopenmpt_c.cpp */, - 51358D5ABD70ED1DC6656AAD /* libopenmpt_config.h */, - AB8C8BC6970ADC5F80029AF7 /* libopenmpt_cxx.cpp */, - F0CBC8E2DCDEC83B85C8A528 /* libopenmpt_ext.h */, - D2619CDABEDFEC73A7D7AA0B /* libopenmpt_ext.hpp */, - 00F1936D6C023C14F553CE53 /* libopenmpt_ext_impl.cpp */, - 9E4A50270A5CF8CD93AD8A0D /* libopenmpt_ext_impl.hpp */, - EB31548F576DB452606231E2 /* libopenmpt_impl.cpp */, - 1278B7FF7EB317C387A89452 /* libopenmpt_impl.hpp */, - 5F96AEB5CB5C0BD214B89934 /* libopenmpt_internal.h */, - 881BE943741C7DBE9DE4E942 /* libopenmpt_stream_callbacks_buffer.h */, - 5196A3873D016493E61CC9F8 /* libopenmpt_stream_callbacks_fd.h */, - E9072015D5DDA612BE87C165 /* libopenmpt_stream_callbacks_file.h */, - 6754160A53FD7D397C9399B8 /* libopenmpt_version.h */, + 1C50C87508CDBBB8314ABCCC /* libopenmpt.h */, + FEEF55B5EA571C8353C33099 /* libopenmpt.hpp */, + 7D3CA7A7694FA700123984ED /* libopenmpt_c.cpp */, + D7C59D9F4301FE624CF67AF2 /* libopenmpt_config.h */, + 88C0EB6B743E3C055D36FA9C /* libopenmpt_cxx.cpp */, + 8D64E0E37977E03C2261BD29 /* libopenmpt_ext.h */, + AF95FC7F9B134D19840B0BB1 /* libopenmpt_ext.hpp */, + FD16906969283810F279CA4F /* libopenmpt_ext_impl.cpp */, + 24AEA1AB90BF49521911DC91 /* libopenmpt_ext_impl.hpp */, + 68E1BAE0D41C1BA4DD119833 /* libopenmpt_impl.cpp */, + 8F271E51FB627E140458FBA3 /* libopenmpt_impl.hpp */, + 1C197FFB88DFDB17D13A6A7A /* libopenmpt_internal.h */, + A55432B09155C62ABA1D33AF /* libopenmpt_stream_callbacks_buffer.h */, + 9750BCAA83BB7CB62CD7E11B /* libopenmpt_stream_callbacks_fd.h */, + C6559EA8B22B25A69BD53FF9 /* libopenmpt_stream_callbacks_file.h */, + 84F35288709CBAB79932D636 /* libopenmpt_version.h */, ); name = "libopenmpt"; path = "../../libopenmpt"; sourceTree = ""; }; - 4FEAB79B3BFA636CA4B3C88A /* soundbase */ = { + AC9DB9C198AD65920167CAB0 /* soundbase */ = { isa = PBXGroup; children = ( - E94A3B16D5C72E59FE442F6D /* AudioSample.h */, - 376C68D9A325D3832C85ED5D /* Dither.h */, - E04519EDCC97F0DCB5B62DED /* MixSample.h */, - 83603E98EFD04011B8EFBA99 /* MixSampleConvert.h */, - 10C48C997CDEEF3AC50000CF /* SampleBuffer.h */, - C135F3922D505634767266C8 /* SampleFormat.h */, - 4E4E0060BA5FA80643B13A46 /* SampleFormatConverters.h */, - 97CCA6B8033DA931CC5B23BA /* SampleFormatCopy.h */, + 061DAD6CF299A0AF1B17A1C3 /* AudioSample.h */, + 3438DA2BA0F144D629515FB0 /* Dither.h */, + A67796EF92C96DDF7BE8AAEF /* MixSample.h */, + C00C49BC2C7D4B35F59BC5BD /* MixSampleConvert.h */, + CDD938BE39F49B5F8216ACF3 /* SampleBuffer.h */, + 7E4B9FB7EA650259338812ED /* SampleFormat.h */, + 4B74FC5BB785A40240D73642 /* SampleFormatConverters.h */, + 9D832DC109F42F3AD212AAC2 /* SampleFormatCopy.h */, ); name = "soundbase"; path = "../../soundbase"; sourceTree = ""; }; - 5A30E327C6F216B20FA3A53E /* sounddsp */ = { + 176C9D76832ED100CCDE5F8D /* sounddsp */ = { isa = PBXGroup; children = ( - 46183367B28688E6FB6F43E6 /* AGC.cpp */, - CD394DF7391D5C3742208A73 /* AGC.h */, - A639A31612A8F8955B91B395 /* DSP.cpp */, - 2494821B9077915B997ABF97 /* DSP.h */, - 90CB8F337C1C7B75A5806937 /* EQ.cpp */, - 5712F8F64338C25D2C7E4729 /* EQ.h */, - C4F5C613B0DC880B592DEF28 /* Reverb.cpp */, - 8B509D47778CA0B1E09EB8A8 /* Reverb.h */, + 03C1D77D6F2F2DFDB818E8FC /* AGC.cpp */, + 4A8F466AB67255AABF7583E6 /* AGC.h */, + 63E2472DCF509DAC183A58AC /* DSP.cpp */, + AAD87E2A16BC8D6A1FBFBBA6 /* DSP.h */, + ADD0B30599219F47C2858D09 /* EQ.cpp */, + 342C2EE32052F84909987D15 /* EQ.h */, + 614172B44D2834ACF6789AC9 /* Reverb.cpp */, + E810D732D44CDA9C3D5FF293 /* Reverb.h */, ); name = "sounddsp"; path = "../../sounddsp"; sourceTree = ""; }; - E961CB335524FFBD9ED48D4A /* soundlib */ = { + EF39A81C5BFCDBA6A4AC6A33 /* soundlib */ = { isa = PBXGroup; children = ( - 3C7C769D28106C4591D4C5F9 /* AudioCriticalSection.cpp */, - 8374A0D26F1D080298B32381 /* AudioCriticalSection.h */, - 4820202EB485B3B43D5E558D /* AudioReadTarget.h */, - 2770B7559334B6455C9AE60F /* BitReader.h */, - 234520938FD4E17D98D0C295 /* ChunkReader.h */, - 0AD00B1E76940A0E3FFA3AD8 /* Container.h */, - 81C3378A6DD637E316C014D0 /* ContainerMMCMP.cpp */, - 8B374EEFF79CE1758075834E /* ContainerPP20.cpp */, - A5CD504691351714FAA02B2A /* ContainerUMX.cpp */, - 60C9E97F4C31B04DB59CC463 /* ContainerXPK.cpp */, - 82966FC4EE5A6EB4B7C09E7E /* Dlsbank.cpp */, - 094AC98A75033435FE624E0F /* Dlsbank.h */, - 033046886FF44478385A7542 /* Fastmix.cpp */, - A976C22395C899137EE7D623 /* FloatMixer.h */, - BA75D59E26DB6825AFB30AFE /* ITCompression.cpp */, - 785621D1E47084722D939406 /* ITCompression.h */, - F445C353600AC2432970F20D /* ITTools.cpp */, - FB7426CE672E9178F08DAB52 /* ITTools.h */, - B3A411869F38072E08FD60E2 /* InstrumentExtensions.cpp */, - E1A6F598CD8DB79076DE1DAE /* IntMixer.h */, - E922BFF4D57496E4BE93D3F4 /* Load_669.cpp */, - 7ABCB9EE660E91DE4F2DCEEE /* Load_amf.cpp */, - A9723D6595C414557EE35165 /* Load_ams.cpp */, - 3A2F3980268110700FA04D80 /* Load_c67.cpp */, - 3FADA47D2BFF7B6D141EB97D /* Load_dbm.cpp */, - 626C67FACEFB28E5D7F709FD /* Load_digi.cpp */, - 3EEEA1E22A4079D2135FB6E2 /* Load_dmf.cpp */, - 2D1D0419196FDB08028E1819 /* Load_dsm.cpp */, - 08D8B6C2746778AD7D6359C5 /* Load_dsym.cpp */, - F2A55F16DEF73606C7167416 /* Load_dtm.cpp */, - 9FB35A128B05320274246F12 /* Load_far.cpp */, - EF83F00ADBD5C7FAC4F4040B /* Load_fmt.cpp */, - A2BF428A8E111A7A7730578A /* Load_gdm.cpp */, - C8156F5FB467464F9D86835F /* Load_imf.cpp */, - 2BE69F5F97AA9E4F6010CF19 /* Load_it.cpp */, - 74162BB8606802A849873FB8 /* Load_itp.cpp */, - 66A16AE852F341D83B127FE8 /* Load_mdl.cpp */, - 213FEC7A0D91C36AF6AF007B /* Load_med.cpp */, - 27D80507132ADDF6FC481A07 /* Load_mid.cpp */, - DE23C7BACA759EAAB394DBBA /* Load_mo3.cpp */, - C80574FBB4574BEB9D7688FB /* Load_mod.cpp */, - 1DECE55F093EBD4FF25CFA5F /* Load_mt2.cpp */, - 3AEFB64126418E310F60CB41 /* Load_mtm.cpp */, - BAE3374A26FE9AEB6F20AB7F /* Load_mus_km.cpp */, - 9EDE23268A30FB15734F3826 /* Load_okt.cpp */, - F2EE6B1DDE40430DC75F801D /* Load_plm.cpp */, - 3B3E749027904B8010AF8890 /* Load_psm.cpp */, - FE209F35EA727625D391B335 /* Load_ptm.cpp */, - A2D80BC78E2AE3B6774920C7 /* Load_s3m.cpp */, - 0258BF8EEEA9967ED7C8D38E /* Load_sfx.cpp */, - BE062679AA58FD6893773A79 /* Load_stm.cpp */, - A32656D88F782DC878976AD8 /* Load_stp.cpp */, - A7C3277113DE8A125C009BA6 /* Load_symmod.cpp */, - 1EDF51BD0A3129ADF34F66BD /* Load_uax.cpp */, - E77EEE5AD3D0C54ABCEF025B /* Load_ult.cpp */, - B010DAF39C62B1E38581EEF3 /* Load_wav.cpp */, - E9A325CB556824BB1ECE5485 /* Load_xm.cpp */, - B67C94FB2236FFA5AB951980 /* Loaders.h */, - 01A54485ED2138C8169F38DC /* MIDIEvents.cpp */, - 88BD923C740F6A2C5D2EA73C /* MIDIEvents.h */, - EC1C3DB0D89930F301173107 /* MIDIMacros.cpp */, - B33EA6149F907D0488AFBA14 /* MIDIMacros.h */, - 5C6B0284C8FAC36ED1F6A486 /* MPEGFrame.cpp */, - E37887224F3D861218A3B6DC /* MPEGFrame.h */, - 51385011BDFC4E0186627FCB /* Message.cpp */, - 8FE0A34DFB990EF884F928D2 /* Message.h */, - E9638FF8D5CB55C63E376ADC /* MixFuncTable.cpp */, - F02A9277DCA785BA052586CE /* MixFuncTable.h */, - F513060161825B80AA6B1680 /* Mixer.h */, - 884A9E2774B264F5DD1D790B /* MixerInterface.h */, - 78C9FA866446EEC98DC3EEDD /* MixerLoops.cpp */, - 3F58B7222BAA8E1214C9CB22 /* MixerLoops.h */, - 4031A658AC9639DF356FDBB7 /* MixerSettings.cpp */, - C7865D7E33A1C01F7CC3D0B3 /* MixerSettings.h */, - E78CF131D309E574FC86E588 /* ModChannel.cpp */, - 05E927AFF13AFF9EDA593CAF /* ModChannel.h */, - 02A29E0A6E073291F7DFD369 /* ModInstrument.cpp */, - 09DF9E1A75F901BCBE1B1250 /* ModInstrument.h */, - AF6196981BF1578324ED389B /* ModSample.cpp */, - 76BEF36AE282F25AABE82225 /* ModSample.h */, - 8A83B34AF69D16EC3FC02680 /* ModSampleCopy.h */, - 63C188DFCFDBEB8018FEFB14 /* ModSequence.cpp */, - AA1915CB16A9D6B51FA5B7CD /* ModSequence.h */, - 195FB3DD85CD085DCEB6C35C /* OPL.cpp */, - E0AF57C14C9366015596943D /* OPL.h */, - 521A6663BEA9274EC7A50866 /* OggStream.cpp */, - 59F2261CC5B6250C8E1C56D6 /* OggStream.h */, - 4002FE2CACBB68D7351B83B1 /* Paula.cpp */, - C775A39B33E4F81A7CCDB31A /* Paula.h */, - 8155EB0DED19EAFDB67F1AC8 /* Resampler.h */, - 129D1878FE190CBB27970CCF /* RowVisitor.cpp */, - 597D37F345CF0EE32EEE4BF3 /* RowVisitor.h */, - B2F24F229E44271287636422 /* S3MTools.cpp */, - 798297766569596E0EBABF8B /* S3MTools.h */, - A3EF8A9B0F608D14D87E079D /* SampleFormatBRR.cpp */, - 8CF15914786FAAAD61676845 /* SampleFormatFLAC.cpp */, - 08C5199174351C0A3D549692 /* SampleFormatMP3.cpp */, - 51283E4FBD9A806B062FB6EF /* SampleFormatMediaFoundation.cpp */, - A36716E08FE5667978DD2411 /* SampleFormatOpus.cpp */, - 914210D4FDB2124DC6D18CD5 /* SampleFormatSFZ.cpp */, - 2C53444118FCAB704192C7EF /* SampleFormatVorbis.cpp */, - 4C8CAEC9B8F1415041CAE328 /* SampleFormats.cpp */, - 4AFFD6F63651AEE61F70EBF6 /* SampleIO.cpp */, - 11894234FD6F042CA6C06A49 /* SampleIO.h */, - 7FA7C6CA6B8E88C214DFEEDF /* Snd_defs.h */, - 8ED5D7DDFA99D6CDC3FF0698 /* Snd_flt.cpp */, - 0889B141F46F73399DC0D956 /* Snd_fx.cpp */, - 4DE5ACEAB9A9ABDA820FDCA4 /* Sndfile.cpp */, - 146A3EBF8023A9690983C343 /* Sndfile.h */, - 1F9C7BC50B833DBDB4D3A3DA /* Sndmix.cpp */, - 3A2316F1A6E9720DEF440170 /* SoundFilePlayConfig.cpp */, - C13B7D272D77DDEA366C5A7A /* SoundFilePlayConfig.h */, - 847994AF706056A719B1BCC4 /* Tables.cpp */, - 4BE4B6B63720BA20A032D217 /* Tables.h */, - 0E2CE45C7AF0E24C43561317 /* Tagging.cpp */, - 0CC13DCB787AA87501DAC24F /* Tagging.h */, - ECAC07275871061721D736E1 /* TinyFFT.cpp */, - F3BDB4C45F771F6FE8D63949 /* TinyFFT.h */, - F788BDF4E3DA94E4CCF9D1F4 /* UMXTools.cpp */, - 7EC3B01D6AAA721513FBD832 /* UMXTools.h */, - F5C7AFC7612D434EEA05E526 /* UpgradeModule.cpp */, - 08381BBCF489F2ABDDA82FBC /* WAVTools.cpp */, - 4F7A05BD3B61C7B4E4B12DD2 /* WAVTools.h */, - 2FFD15809B177921E43989B5 /* WindowedFIR.cpp */, - 76F2488FE2810A7AEB7DEB91 /* WindowedFIR.h */, - 5EE81FA5CAAC1E9593124F5F /* XMTools.cpp */, - E5744324512EAECEDA8DC8A8 /* XMTools.h */, - 294D3010159F0700FEBD4410 /* load_j2b.cpp */, - 814AC2DA6DF3290A96894589 /* mod_specifications.cpp */, - 08E5A74DF462F8E6DD5AB67E /* mod_specifications.h */, - 08812CFDF4FD1F401D7B2054 /* modcommand.cpp */, - CFEBF58EBB3DCD7EA45C0A8F /* modcommand.h */, - F18BC5CD5DA6286FA6C83803 /* modsmp_ctrl.cpp */, - B8E8E1922478A37D2D748495 /* modsmp_ctrl.h */, - E266E428CEB7CF6AF71BBE2C /* opal.h */, - 4822C14EB4E6BF3E7D4CF008 /* pattern.cpp */, - 4F2C9921BBE503CC44451EA6 /* pattern.h */, - 4F9C3B3D3B1A8CD624124A6E /* patternContainer.cpp */, - D68280FDC29580566B7F5D43 /* patternContainer.h */, - C34F447D2FBE99FC78A754FC /* plugins */, - 7EBDDAED6AA49CE513F50203 /* tuning.cpp */, - C5E1C72CB11DCB961A30E38D /* tuning.h */, - 6E6ED48B5AEC242543E4E2BC /* tuningCollection.cpp */, - 64866C7650D8436639F78076 /* tuningbase.h */, - D7109B26C3239B7F6C0D786C /* tuningcollection.h */, + 0287C6D7EE1ABC7F57DF1534 /* AudioCriticalSection.cpp */, + A013DD508CBC4480B55260FF /* AudioCriticalSection.h */, + 4599282EB1FEBBB43AD75D8D /* AudioReadTarget.h */, + 642FCC0BD0F3CAFB9959FBC5 /* BitReader.h */, + A0C761210C57230C15530424 /* ChunkReader.h */, + F96BF7C66530F6B62E962681 /* Container.h */, + E766CB6FD379CBC87C63A8B5 /* ContainerMMCMP.cpp */, + 3106A8899D6B3B102644DDE8 /* ContainerPP20.cpp */, + 8B5FB83377C77E01E0329317 /* ContainerUMX.cpp */, + 465B516D32C3173B9B2E2C51 /* ContainerXPK.cpp */, + 71325B6DDDF6595DA65C8A27 /* Dlsbank.cpp */, + 06163BDD72CFA587FB2EC061 /* Dlsbank.h */, + 40EF5A3EACB3592E75198AF8 /* Fastmix.cpp */, + 861D6F9C726F468C5B8E839C /* FloatMixer.h */, + B7EEDD9E23547125AC2C13FE /* ITCompression.cpp */, + 7E7AC939EA942CDB33B73C6F /* ITCompression.h */, + 3105D8099DC9D6F9662F07C4 /* ITTools.cpp */, + F840982064FA02CBED591DA5 /* ITTools.h */, + 107FF285FC12E82D65D741E2 /* InstrumentExtensions.cpp */, + 7EF2A0396AD96231132AC94E /* IntMixer.h */, + AF543CF79BA613E784C550F7 /* Load_669.cpp */, + 5763666743B53D572CD47A67 /* Load_amf.cpp */, + 8619EADD726BC1CD5B8AFEDD /* Load_ams.cpp */, + 17D6E5F80328BDE8EC46FAF8 /* Load_c67.cpp */, + 1C5451F608A628E6F1C465F6 /* Load_dbm.cpp */, + E8D68A4C54664C375D622D4F /* Load_digi.cpp */, + 1B954E5B07E7254BF005635B /* Load_dmf.cpp */, + 0AC4B091F6158881DF34C591 /* Load_dsm.cpp */, + 855AF850F1E9B93BFAE59A53 /* Load_dsym.cpp */, + CF4C0C8FBB9EE37EA4BD208F /* Load_dtm.cpp */, + 65E5D7145137AF043A56EC14 /* Load_far.cpp */, + CC2A9D83B87C7473A19BB183 /* Load_fmt.cpp */, + 7F66EF026BB8C6F254D70303 /* Load_gdm.cpp */, + A5BC1BD8910EF3C77A2D30D8 /* Load_imf.cpp */, + 68A5B415D469B3059DCFE3CF /* Load_it.cpp */, + 3A48A8BA269A7FAA0FB9BCBA /* Load_itp.cpp */, + 434817612F9AEE5018B92B61 /* Load_mdl.cpp */, + FEE598F3EA3770E3D356ADF3 /* Load_med.cpp */, + 047FB27FF0D0896FD9EFC67F /* Load_mid.cpp */, + BBCA7333A71C4B23903B8833 /* Load_mo3.cpp */, + 8E37F1FD7A89C8ED63A805FE /* Load_mod.cpp */, + FA9292D8E6E469C8CF03A7D8 /* Load_mt2.cpp */, + 179663BA03E83AAAEC0678BA /* Load_mtm.cpp */, + 77F9E36EE31347102C3657A4 /* Load_mus_km.cpp */, + 7B85D09E67D7A78E50F6E49E /* Load_okt.cpp */, + B820E91FA472C00F8D91FD1F /* Load_plm.cpp */, + 18E520090437F8F8ED553509 /* Load_psm.cpp */, + DBC74BAEC719239EB03860AE /* Load_ptm.cpp */, + 7F7FB83F6BD18F2F54F0CC3F /* Load_s3m.cpp */, + DFFE6B07CB5043F7B46F8007 /* Load_sfx.cpp */, + 8438A37B708A7A6B59A9B77B /* Load_stm.cpp */, + 80CD02516C1FDA40553E1751 /* Load_stp.cpp */, + 64D9D395D0F33637191647CB /* Load_symmod.cpp */, + FB85FE35E7D7D525D0F61236 /* Load_uax.cpp */, + C4259BD3B07772C39996AFD3 /* Load_ult.cpp */, + 7F2A39BA6B7C10AA549B4DBA /* Load_wav.cpp */, + 0FEE0A0B7BB209FB44183AC5 /* Load_xm.cpp */, + 5C053551C8BE9FFB511EBAD5 /* Loaders.h */, + 6785B21F5302A6627C7FA676 /* MIDIEvents.cpp */, + 6E4C21795A9EF86843BD3579 /* MIDIEvents.h */, + 7BE6C98A6763BDCD90E0BDE1 /* MIDIMacros.cpp */, + 90E5528D7C372A7D6556678D /* MIDIMacros.h */, + D9ED4312457D05FD4E79E614 /* MPEGFrame.cpp */, + 20389CD88CFC9AC85562CB92 /* MPEGFrame.h */, + 8EF764C7FABB63B7C3219481 /* Message.cpp */, + 15F89A5281B105FD0A1120D7 /* Message.h */, + 4631BEB2329984809B049996 /* MixFuncTable.cpp */, + 0DFD03CEF979F71022F7F724 /* MixFuncTable.h */, + B2BCAA171E2B00976714BB96 /* Mixer.h */, + E517CDE1D17F93AF3AEBA7C5 /* MixerInterface.h */, + BE848B1DAA017F60D37E7F74 /* MixerLoops.cpp */, + 1CFF639B08513B8BF16F789B /* MixerLoops.h */, + 3DAAAE58A90F42DF32E8E3B7 /* MixerSettings.cpp */, + 849C09A3F0B66C4439D97CD8 /* MixerSettings.h */, + 045F6388F0DB56CB195957DF /* ModChannel.cpp */, + CB1AA5B1B76C7CA1A08BB9B1 /* ModChannel.h */, + FF1AA70A6B803A91F458DC69 /* ModInstrument.cpp */, + C6F44A3F320FAEE07B31BE74 /* ModInstrument.h */, + 2CE4D72698739911A16F7A29 /* ModSample.cpp */, + B37D08211F420711E8A737DB /* ModSample.h */, + 90A75BB3FCC1BE5445E4CEE8 /* ModSampleCopy.h */, + 20D734048CF197A5D513A839 /* ModSequence.cpp */, + 279C5659932B18449C27F95B /* ModSequence.h */, + D60758F44276AD738B5F6873 /* OPL.cpp */, + 5D055134C9E85F74D2EB8DB0 /* OPL.h */, + D88489B544144BA04D102CB8 /* OggStream.cpp */, + 96B13BD202763AC2CBDB6A8C /* OggStream.h */, + 3DCE6F7FA987DA2932E7F403 /* Paula.cpp */, + 841E48B2F08C9D3139765831 /* Paula.h */, + BE1400C42AD9FEB3F33E2F7E /* Resampler.h */, + 5858A90E44D59C516D529D65 /* RowVisitor.cpp */, + 3624E46B2276BB5B0B95F86B /* RowVisitor.h */, + 8F99FC9A7BEBD38A640A119B /* S3MTools.cpp */, + 16CE421702B5040FAB056B2C /* S3MTools.h */, + E09B95BF4C0C9838152B12C1 /* SampleFormatBRR.cpp */, + 5289B72D3E0708C727FFC55E /* SampleFormatFLAC.cpp */, + 457124B5B1E1262E7A00A1B6 /* SampleFormatMP3.cpp */, + 0E1850967A8A92B2C31EC836 /* SampleFormatMediaFoundation.cpp */, + 809B76856C19C71E551185B6 /* SampleFormatOpus.cpp */, + CEEE1AF83A5F1D71037E97F9 /* SampleFormatSFZ.cpp */, + 72F466285E9DCE578733EAD6 /* SampleFormatVorbis.cpp */, + 4905B7C9B56A4A503E43EC28 /* SampleFormats.cpp */, + 27A6836F13F85A5FFC16986F /* SampleIO.cpp */, + AED4EDD49ABBAFCC430C16EA /* SampleIO.h */, + 1CF3716B08DA3363B12A9A80 /* Snd_defs.h */, + 7D71C386E935C276B29BF240 /* Snd_flt.cpp */, + 6E26634B5A0D2543035E8B60 /* Snd_fx.cpp */, + 732F922ADFF3901AA859C1E4 /* Sndfile.cpp */, + BAF2DE1426AC49BFAF0B6499 /* Sndfile.h */, + 85392DCF7120EFC61A7155E4 /* Sndmix.cpp */, + A91DFCF615E458135E3FE775 /* SoundFilePlayConfig.cpp */, + 3EEBE378AA26443CB31BC1CB /* SoundFilePlayConfig.h */, + 21C53F500DAC0148B6FC6765 /* Tables.cpp */, + A8A4F0A194E0F30BFDF20B03 /* Tables.h */, + 4BEBF812B7AFF702801528CD /* Tagging.cpp */, + 92D834D0FE919F7A87F1B954 /* Tagging.h */, + 296C1CDD95301BCD5E964B97 /* TinyFFT.cpp */, + F08926175C4391C1E5A2AB9B /* TinyFFT.h */, + D42F6A6DC081415DA9A07E6D /* UMXTools.cpp */, + 1B0F5CBE07F61DB6B04684D3 /* UMXTools.h */, + 7B05F1FAE76A84817043265A /* UpgradeModule.cpp */, + E5DEC734D1309F24BA4FDC34 /* WAVTools.cpp */, + ECC5B05DD8AC725581FDD872 /* WAVTools.h */, + EC12C2A4582D2546A14F35DA /* WindowedFIR.cpp */, + F3748A1D5F044C0868002D20 /* WindowedFIR.h */, + 64F93AC4D0BD39B499236A7E /* XMTools.cpp */, + E240B5764EFA1F21D7593AFB /* XMTools.h */, + 06F4DC88F245B478DB64F188 /* load_j2b.cpp */, + 9EE9FE588A926688B3288207 /* mod_specifications.cpp */, + E51808F3D196588CBA8E1624 /* mod_specifications.h */, + 4E3CBD933AB9B0D66336B1EA /* modcommand.cpp */, + AC92A20798E479F78103B707 /* modcommand.h */, + AEA171F21ABCD49363DEE427 /* modsmp_ctrl.cpp */, + 356B2321A1FAE40BAAF6C523 /* modsmp_ctrl.h */, + FF6B08FBEBBCF33C1421E2FE /* opal.h */, + 4E33DC6DBAF7DA5D835D0B28 /* pattern.cpp */, + 4CF80A74B8B1751E411190F8 /* pattern.h */, + 2CD09BE2184EEC7B0146AA13 /* patternContainer.cpp */, + 731B98FE5F2E985708187544 /* patternContainer.h */, + 80F8E893EC663E133550F912 /* plugins */, + C4C5B491B0AC768959FDDCA6 /* tuning.cpp */, + 22A201180EDE048277F01C79 /* tuning.h */, + 4BA23431372085CA20184362 /* tuningCollection.cpp */, + 412D19EF2D7FF0DE169E2DEF /* tuningbase.h */, + 74A9B22760BCB28009A68F6D /* tuningcollection.h */, ); name = "soundlib"; path = "../../soundlib"; sourceTree = ""; }; - C34F447D2FBE99FC78A754FC /* plugins */ = { + 80F8E893EC663E133550F912 /* plugins */ = { isa = PBXGroup; children = ( - F527128B6144047C2A1C71E9 /* DigiBoosterEcho.cpp */, - BC2659D128380178B18993B7 /* DigiBoosterEcho.h */, - 2F0089A19B3BE964A43066F4 /* LFOPlugin.cpp */, - F65E970E62CF99872BEE1310 /* LFOPlugin.h */, - 35100F5EA175A2E42A4E44BD /* OpCodes.h */, - 85CB2752F1DCCFF87A2E6238 /* PlugInterface.cpp */, - CC6D25B5383482D1818F1034 /* PlugInterface.h */, - CAB0009F36C2A845BF133B85 /* PluginManager.cpp */, - D13D8A553D04E771865F75D4 /* PluginManager.h */, - A066DC7B0C78842295C91662 /* PluginMixBuffer.h */, - E96DF64E5534536B9E8FE1CD /* PluginStructs.h */, - 3702474223ABAE714C41CAF0 /* SymMODEcho.cpp */, - 3E370FFE2AB55F9713AD1D2F /* SymMODEcho.h */, - 32CF28BB9E9327AB67F95775 /* dmo */, + FB844A6967A13C5A3079A9C7 /* DigiBoosterEcho.cpp */, + B94C55CD255EFD73AEAF8FB3 /* DigiBoosterEcho.h */, + ACAFEFF218EB4FB621E0CC45 /* LFOPlugin.cpp */, + 330BA2329F7BA4AB689A1E34 /* LFOPlugin.h */, + 3289175E9EEEAAE427C74CBD /* OpCodes.h */, + 0B2F79D67740217D0092B3BC /* PlugInterface.cpp */, + 89F0F5FAF5B652173E12E179 /* PlugInterface.h */, + C7D6FC9A33E8A441BC393781 /* PluginManager.cpp */, + 8EC05A9BFA86B7B743E2451A /* PluginManager.h */, + 9D8CD877099E801E92EF125E /* PluginMixBuffer.h */, + EF376D1A5BFEC936A4595899 /* PluginStructs.h */, + 54A183C0404AEBEF69E0066F /* SymMODEcho.cpp */, + 1B6B6FA307E9BF3CF0E07DD4 /* SymMODEcho.h */, + 6F8E3D71DB523C61A4B86C2B /* dmo */, ); name = "plugins"; path = "plugins"; sourceTree = ""; }; - 32CF28BB9E9327AB67F95775 /* dmo */ = { + 6F8E3D71DB523C61A4B86C2B /* dmo */ = { isa = PBXGroup; children = ( - A748CBA393F132D3BC874E52 /* Chorus.cpp */, - AE21EF679A9F3F018397FD98 /* Chorus.h */, - 324CF1ED1E8B9B69C70D789B /* Compressor.cpp */, - 79F7C0FD658BB6A5CE4F105A /* Compressor.h */, - 38FD1854A40EC1FA2D60533A /* DMOPlugin.cpp */, - BF96A8892B5D05A674B89308 /* DMOPlugin.h */, - 9E6CA3568A0099FEF3C4F2B2 /* DMOUtils.cpp */, - 3CE2CB18288B334851214FC7 /* DMOUtils.h */, - B7E54627A324F1A24CA7CDD4 /* Distortion.cpp */, - BE6B682FAAFF5DD713C4B78B /* Distortion.h */, - 4B5F02E737DD528020D51018 /* Echo.cpp */, - D256821FBE69827867535F65 /* Echo.h */, - E6C3D4E8528A31059BE5BF67 /* Flanger.cpp */, - 6DC18303D9FCE3C6E2F16056 /* Flanger.h */, - DD90FE0BC939663BF2CF81BA /* Gargle.cpp */, - 64E42623506277BC395A3554 /* Gargle.h */, - F3F92A725F161D6328EE89D0 /* I3DL2Reverb.cpp */, - B12324271D35CCCDA6865E0D /* I3DL2Reverb.h */, - D13FDA133D0637308661C592 /* ParamEq.cpp */, - 984693AC0482F36F0D7770FF /* ParamEq.h */, - DAAC944646C986370FA1F3A4 /* WavesReverb.cpp */, - 612E3B4CCD3FE3F256917532 /* WavesReverb.h */, + C4E70722B0906F51D9268BD0 /* Chorus.cpp */, + 8B554F0D77D39FA660CB5D3E /* Chorus.h */, + 41E409EF2D23B46AD6A5909C /* Compressor.cpp */, + 5F0FF7854BA3EC2DB46746E2 /* Compressor.h */, + DE1112E34A23BA89D3744CC9 /* DMOPlugin.cpp */, + E549E809511045269A6BD388 /* DMOPlugin.h */, + 8484D9DE7018CF86D9DC283B /* DMOUtils.cpp */, + CBCA9485B773FCB4E0091834 /* DMOUtils.h */, + 54CBC7A2400A721EE98C4E50 /* Distortion.cpp */, + 1B46492F07DA3ED7709E988B /* Distortion.h */, + 2893628C1411B325FD0871BD /* Echo.cpp */, + 6FEF99205B029A7904EC7666 /* Echo.h */, + EC8D4BB45854A8D0A1AF3633 /* Flanger.cpp */, + EA70EA5456AC4A185FA1C7A7 /* Flanger.h */, + FA2F3B8AE6D8A2B90F6FBE38 /* Gargle.cpp */, + 411887C82D96D761168E95F9 /* Gargle.h */, + 3093C85D9CAFBA4E658727BC /* I3DL2Reverb.cpp */, + 378775ABA3981D522CEAAF91 /* I3DL2Reverb.h */, + 8EC2AA59FA88077643E495D8 /* ParamEq.cpp */, + 15F6F9FD81315AC18A26D750 /* ParamEq.h */, + 17463232836224234C3A9190 /* WavesReverb.cpp */, + 5E543748CA65DFEE53B7712E /* WavesReverb.h */, ); name = "dmo"; path = "dmo"; sourceTree = ""; }; - 9E6A03080A2D379253DDC51E /* Products */ = { + 989CAF37842B39012D4A4DFC /* src */ = { isa = PBXGroup; children = ( + 10E5910AFC09E18A2555C61A /* mpt */, + ); + name = "src"; + path = "../../src"; + sourceTree = ""; + }; + 10E5910AFC09E18A2555C61A /* mpt */ = { + isa = PBXGroup; + children = ( + 5BFCDDCCC714C5F690C15490 /* base */, + 4B80E5B8B763F4F8C0662235 /* binary */, + 65E1E6D65107B13D3A4D3609 /* check */, + 9D846E77893F5E2332F7D66D /* crc */, + 03BDA1AB6FA0B0EB78A3DE27 /* crypto */, + 7C85C28AE868D1CAF16BFF06 /* detect */, + B77A0A92235E19D22C61470E /* endian */, + BE421372AA29D569537A3B87 /* environment */, + F6CC7E61625C404C6B582164 /* exception_text */, + 6FADB58BDB90C4CBE493F207 /* format */, + 984B3D5E04642488CD10B421 /* json */, + 14B29AE500D8644CE91DEA17 /* mutex */, + 5222BBF7BE05CA37C708F873 /* osinfo */, + E24F379FCEA10E8FB7C04B9F /* out_of_memory */, + 5CA26B4648C835AD310EBB78 /* parse */, + 88CC0842F4AF1782FDB245BE /* random */, + 5EB02841CA933781D39665BD /* string */, + C178144E2D08D6383604B750 /* string_convert */, + 57C950EEC38D4FDE8CF37FA8 /* system_error */, + 43CBD0C3AFE3B7ED78904787 /* test */, + 9F3AF5000B53DC2AD4FF6BC4 /* uuid */, + AA6941A916F902941FF5E3AB /* uuid_namespace */, + ); + name = "mpt"; + path = "mpt"; + sourceTree = ""; + }; + 5BFCDDCCC714C5F690C15490 /* base */ = { + isa = PBXGroup; + children = ( + C8D83AE1343ECE67BD167040 /* algorithm.hpp */, + AE2D12DB1ABDD3C523B9B4DD /* alloc.hpp */, + 2C83CD5C1817C30481DB1CB9 /* arithmetic_shift.hpp */, + C6C8B4D9325876C43B5457DC /* array.hpp */, + 5F0AC635CBCEC4259434F5EF /* bit.hpp */, + A410AA6490B91194B94F2D13 /* check_platform.hpp */, + B1AEFC671DCBEE58E6A25BC6 /* compiletime_warning.hpp */, + 1FB774638B7DD17FD4D85FE2 /* constexpr_throw.hpp */, + A1D4208A8D5114CDB6CE14E1 /* detect.hpp */, + F4F56CD960BCC9F5A9175858 /* detect_compiler.hpp */, + D5B53E0F412641880A45BB10 /* detect_libc.hpp */, + C7BE1EAB33FA7E6E3CEFFBFD /* detect_libcxx.hpp */, + 417B383AADE0CBC036B96D99 /* detect_os.hpp */, + 60D6116ACC11722DD506EFBC /* detect_quirks.hpp */, + 207E3D6D8CB99D3095AE1AC0 /* floatingpoint.hpp */, + 521EADD8BE38107A075B200E /* integer.hpp */, + EB8F06BED70CFA00008AFA14 /* macros.hpp */, + B230D6779E82AD6787A1EA77 /* math.hpp */, + E3C619D9CF430D1CF8C00D30 /* memory.hpp */, + 90676081FCCCF30785A595E0 /* namespace.hpp */, + D890886444ABEB058DCDFB99 /* numeric.hpp */, + 88D7487BF4F1AB1C3D14BCB0 /* pointer.hpp */, + 107C4246FCF992DFE5F15077 /* preprocessor.hpp */, + 7E5D27C1EA988784F38D0414 /* saturate_cast.hpp */, + 74338A1960DCF14889720DC8 /* saturate_round.hpp */, + 4DE0AE57395DA29A62DAA2AE /* secure.hpp */, + 21BC96400D508CE87614E69C /* semantic_version.hpp */, + 532BE545BFF14162084DD0C4 /* source_location.hpp */, + 9ECD7E188A1F5608733E9318 /* span.hpp */, + F901818F65BBEB39EE1A0614 /* tests */, + 74C443CAE0DEA66B2901B7FF /* utility.hpp */, + 48C43AE9B4DE9D8AFD00AE1E /* version.hpp */, + A0160B270CDD67435538F6A5 /* wrapping_divide.hpp */, + ); + name = "base"; + path = "base"; + sourceTree = ""; + }; + F901818F65BBEB39EE1A0614 /* tests */ = { + isa = PBXGroup; + children = ( + B220E66A1E8A7BCDA7CD2978 /* tests_base_arithmetic_shift.hpp */, + 6C1695ED58C0CAFC4191D217 /* tests_base_bit.hpp */, + 59102DB7C5F717ADCEE51929 /* tests_base_math.hpp */, + 04CD2A2AF0CDBEA419962B29 /* tests_base_saturate_cast.hpp */, + 23EA70F68F0885C3D8D58AD5 /* tests_base_saturate_round.hpp */, + 8802D44F74EE6BBFDD642B12 /* tests_base_wrapping_divide.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 4B80E5B8B763F4F8C0662235 /* binary */ = { + isa = PBXGroup; + children = ( + 4D7EC34B39E68919A2519E2F /* base64.hpp */, + E23113E34EA2155C17C18FE4 /* base64url.hpp */, + 91E6DDC4FD759FAF067280C7 /* hex.hpp */, + 0BF76C6077BB6B5040219C1A /* tests */, + ); + name = "binary"; + path = "binary"; + sourceTree = ""; + }; + 0BF76C6077BB6B5040219C1A /* tests */ = { + isa = PBXGroup; + children = ( + 686844B754127AC63DE381E1 /* tests_binary.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 65E1E6D65107B13D3A4D3609 /* check */ = { + isa = PBXGroup; + children = ( + FC98C9E068288BCB71246CE3 /* libc.hpp */, + 1AA8475B06FA1E4BEF185C5B /* mfc.hpp */, + 11B1C905FD1890D36684A4E9 /* windows.hpp */, + ); + name = "check"; + path = "check"; + sourceTree = ""; + }; + 9D846E77893F5E2332F7D66D /* crc */ = { + isa = PBXGroup; + children = ( + 3BBCE0F827A3A2F0D0F3080E /* crc.hpp */, + 02729B66EEAD9ED057C0B6C7 /* tests */, + ); + name = "crc"; + path = "crc"; + sourceTree = ""; + }; + 02729B66EEAD9ED057C0B6C7 /* tests */ = { + isa = PBXGroup; + children = ( + C9CDD777B5763FA7DE0C5B26 /* tests_crc.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 03BDA1AB6FA0B0EB78A3DE27 /* crypto */ = { + isa = PBXGroup; + children = ( + 383FD9F9A4AFDB726DCE55FB /* exception.hpp */, + EF49E2F2DBC6D5350444D649 /* hash.hpp */, + 7922327FE5B1F369EEADD481 /* jwk.hpp */, + 8C2F48D3F8F346C3C159778D /* tests */, + ); + name = "crypto"; + path = "crypto"; + sourceTree = ""; + }; + 8C2F48D3F8F346C3C159778D /* tests */ = { + isa = PBXGroup; + children = ( + FC9CBB2BE846F13AD117F955 /* tests_crypto.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 7C85C28AE868D1CAF16BFF06 /* detect */ = { + isa = PBXGroup; + children = ( + 38B85F9EA4472189AD4302A1 /* mfc.hpp */, + 38BA5C18A480B934EDDB4797 /* nlohmann_json.hpp */, + ); + name = "detect"; + path = "detect"; + sourceTree = ""; + }; + B77A0A92235E19D22C61470E /* endian */ = { + isa = PBXGroup; + children = ( + 3BF71195A7BD6EB1F018FD13 /* floatingpoint.hpp */, + 249351A190F8E42719D18600 /* integer.hpp */, + B524A4BF21E9A2AFEA4ED379 /* tests */, + ); + name = "endian"; + path = "endian"; + sourceTree = ""; + }; + B524A4BF21E9A2AFEA4ED379 /* tests */ = { + isa = PBXGroup; + children = ( + 99950A86852C4D3B2EE1C33B /* tests_endian_floatingpoint.hpp */, + 4B9CFB3337728231201C9D84 /* tests_endian_integer.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + BE421372AA29D569537A3B87 /* environment */ = { + isa = PBXGroup; + children = ( + 99C6469B8505F1162E88CD48 /* environment.hpp */, + ); + name = "environment"; + path = "environment"; + sourceTree = ""; + }; + F6CC7E61625C404C6B582164 /* exception_text */ = { + isa = PBXGroup; + children = ( + EF07816EDBC7111344E5F91D /* exception_text.hpp */, + ); + name = "exception_text"; + path = "exception_text"; + sourceTree = ""; + }; + 6FADB58BDB90C4CBE493F207 /* format */ = { + isa = PBXGroup; + children = ( + 1750259C83C267B8CC569D3C /* default_floatingpoint.hpp */, + 0F5372197B6F640A4447D177 /* default_formatter.hpp */, + CB369E23374846CAC099D809 /* default_integer.hpp */, + 2D5B373F19EF2CE782B3869B /* default_string.hpp */, + A7E993BB134F27429C27C91A /* helpers.hpp */, + 1B96D63C87FB69C310D40B9C /* message.hpp */, + C1FC9ACBAD9090731655EA27 /* message_macros.hpp */, + 84373932709FFFFFD90A1416 /* simple.hpp */, + 7A680999663D514C8FEC9048 /* simple_floatingpoint.hpp */, + 6C873621581B2CC9C1DF857D /* simple_integer.hpp */, + 0BA1026A77DC622D80D1DFBC /* simple_spec.hpp */, + 768BAC64E24FAB54ABB5DB1E /* tests */, + ); + name = "format"; + path = "format"; + sourceTree = ""; + }; + 768BAC64E24FAB54ABB5DB1E /* tests */ = { + isa = PBXGroup; + children = ( + 1B77EE03074D7501F0F68F54 /* tests_format_message.hpp */, + 421E02E0AEE6CF637777D875 /* tests_format_simple.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 984B3D5E04642488CD10B421 /* json */ = { + isa = PBXGroup; + children = ( + F8F7E0CBE449B8BBCD68F5CB /* json.hpp */, + ); + name = "json"; + path = "json"; + sourceTree = ""; + }; + 14B29AE500D8644CE91DEA17 /* mutex */ = { + isa = PBXGroup; + children = ( + CD7F285BB9FC1B9EE2791CB2 /* mutex.hpp */, + ); + name = "mutex"; + path = "mutex"; + sourceTree = ""; + }; + 5222BBF7BE05CA37C708F873 /* osinfo */ = { + isa = PBXGroup; + children = ( + 8845F536F4569DDD7DA82F1D /* windows_version.hpp */, + ); + name = "osinfo"; + path = "osinfo"; + sourceTree = ""; + }; + E24F379FCEA10E8FB7C04B9F /* out_of_memory */ = { + isa = PBXGroup; + children = ( + 4C10F0FB38E537AF619477AB /* out_of_memory.hpp */, + ); + name = "out_of_memory"; + path = "out_of_memory"; + sourceTree = ""; + }; + 5CA26B4648C835AD310EBB78 /* parse */ = { + isa = PBXGroup; + children = ( + 3DEE388F296B2CD252E82CE6 /* parse.hpp */, + C18F67ECAD7629E456C78F01 /* tests */, + ); + name = "parse"; + path = "parse"; + sourceTree = ""; + }; + C18F67ECAD7629E456C78F01 /* tests */ = { + isa = PBXGroup; + children = ( + F44EB7FAE08D617689103EA8 /* tests_parse.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 88CC0842F4AF1782FDB245BE /* random */ = { + isa = PBXGroup; + children = ( + 4D400B14B95A6EB5027D7E49 /* crand.hpp */, + 34206415A0310CBC29839EFB /* default_engines.hpp */, + B902D65EA56A9C2C0ED6B042 /* device.hpp */, + 61A63F304D0E06FEB6791A14 /* engine.hpp */, + 98CF021D844D53B66D45114E /* engine_lcg.hpp */, + 07C31E48F32AE5155C96F92B /* random.hpp */, + C9EE001BB56BF45DDEE8F471 /* seed.hpp */, + 4722BFA7B3E6BD977C4CEE61 /* tests */, + ); + name = "random"; + path = "random"; + sourceTree = ""; + }; + 4722BFA7B3E6BD977C4CEE61 /* tests */ = { + isa = PBXGroup; + children = ( + 009F1149EC484758D5194F73 /* tests_random.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 5EB02841CA933781D39665BD /* string */ = { + isa = PBXGroup; + children = ( + BEE08A50AA48511E13B46534 /* buffer.hpp */, + DACD403546923F250FF86FEF /* tests */, + 57D58DC2C3EFF0630C1201F8 /* types.hpp */, + D8CCA06E443234F5CD0AD6CD /* utility.hpp */, + ); + name = "string"; + path = "string"; + sourceTree = ""; + }; + DACD403546923F250FF86FEF /* tests */ = { + isa = PBXGroup; + children = ( + 829CEFD9EE64BD5DB7F5C56F /* tests_string_buffer.hpp */, + FED8A4F7EAAE2BF5D3584648 /* tests_string_utility.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + C178144E2D08D6383604B750 /* string_convert */ = { + isa = PBXGroup; + children = ( + 7F2DA6AFEB3E4E567490E095 /* convert.hpp */, + C5E1A3C5B175996D1A3AF321 /* macros.hpp */, + 3FDE4F5DAB4E52D6746DCC5E /* tests */, + ); + name = "string_convert"; + path = "string_convert"; + sourceTree = ""; + }; + 3FDE4F5DAB4E52D6746DCC5E /* tests */ = { + isa = PBXGroup; + children = ( + 6E4685C95A48C9D943CBBFD2 /* tests_string_convert.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + 57C950EEC38D4FDE8CF37FA8 /* system_error */ = { + isa = PBXGroup; + children = ( + 0BF64FA0F79F85AFE0708DCA /* system_error.hpp */, + ); + name = "system_error"; + path = "system_error"; + sourceTree = ""; + }; + 43CBD0C3AFE3B7ED78904787 /* test */ = { + isa = PBXGroup; + children = ( + 89F40CFB7546E4EA5E6521FB /* test.hpp */, + 2FEA2ACD9B5A2D466479A7CE /* test_macros.hpp */, + ); + name = "test"; + path = "test"; + sourceTree = ""; + }; + 9F3AF5000B53DC2AD4FF6BC4 /* uuid */ = { + isa = PBXGroup; + children = ( + CE121DFCBA64F4EBA38331FC /* guid.hpp */, + E411A56250CB0F0DD92A2AE7 /* tests */, + F854942DE4A66B1DCDC5A82D /* uuid.hpp */, + ); + name = "uuid"; + path = "uuid"; + sourceTree = ""; + }; + E411A56250CB0F0DD92A2AE7 /* tests */ = { + isa = PBXGroup; + children = ( + D392487ABF263E2228EB97D6 /* tests_uuid.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + AA6941A916F902941FF5E3AB /* uuid_namespace */ = { + isa = PBXGroup; + children = ( + 2D053361997535DA6294AF62 /* tests */, + 9624282C82E4B8D0EB01A1DB /* uuid_namespace.hpp */, + ); + name = "uuid_namespace"; + path = "uuid_namespace"; + sourceTree = ""; + }; + 2D053361997535DA6294AF62 /* tests */ = { + isa = PBXGroup; + children = ( + 08A98847F4AACC57DD2DC350 /* tests_uuid_namespace.hpp */, + ); + name = "tests"; + path = "tests"; + sourceTree = ""; + }; + EADBDCA4569E102F9F4E9FBB /* Products */ = { + isa = PBXGroup; + children = ( C1F3343CADAE24E856669D32 /* liblibopenmpt.dylib */, ); name = "Products"; sourceTree = ""; }; - B533D44521F607D06AA6965C /* Projects */ = { + B8088B4824CBBED26D7B4D5F /* Projects */ = { isa = PBXGroup; children = ( 8CACB699F8BD5E40810FF17F /* mpg123.xcodeproj */, @@ -1009,11 +1621,11 @@ /* Begin PBXNativeTarget section */ 87EFAFF2F3FCDDD87CE3D9C3 /* libopenmpt */ = { isa = PBXNativeTarget; - buildConfigurationList = 3E76E37EAA40B5D9F346B4FE /* Build configuration list for PBXNativeTarget "libopenmpt" */; + buildConfigurationList = 413D05E6AD07D740F60DD665 /* Build configuration list for PBXNativeTarget "libopenmpt" */; buildPhases = ( - 60F9DCBFCCC3AE1A15CAAD3F /* Resources */, - 9842D600040DA85B4D13A780 /* Sources */, - 824FCF41EE19A19C3720A0C1 /* Frameworks */, + 63C0FE26CF8AD0811891CFA6 /* Resources */, + 9B09F86707D4C9C250DAC8E7 /* Sources */, + 8516F1A8F1E0C2033AE7C128 /* Frameworks */, ); buildRules = ( ); @@ -1083,7 +1695,7 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 60F9DCBFCCC3AE1A15CAAD3F /* Resources */ = { + 63C0FE26CF8AD0811891CFA6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1093,146 +1705,146 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 9842D600040DA85B4D13A780 /* Sources */ = { + 9B09F86707D4C9C250DAC8E7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 97A51AD6834E8205ACE49D84 /* ComponentManager.cpp in Sources */, - 6229FC8D4E91C25BB7FCD671 /* FileReader.cpp in Sources */, - 354D6662A1DC274DAAD80865 /* Logging.cpp in Sources */, - B559BADCA1D6AD1FCA53AE33 /* Profiler.cpp in Sources */, - 96E97B500204DFF14B26EF85 /* misc_util.cpp in Sources */, - 18A728A284C18B43CDE39BD7 /* mptFileIO.cpp in Sources */, - 1C8E80F988527FE951B8AFB3 /* mptIO.cpp in Sources */, - B475924FA0DD581D09496D33 /* mptLibrary.cpp in Sources */, - 89ECFABBF5B0F9ABBE162A76 /* mptOS.cpp in Sources */, - CA192FA4368A311DFFA8ABA5 /* mptPathString.cpp in Sources */, - 42BF1D47AED980E8F7FB907C /* mptRandom.cpp in Sources */, - 9E08049F0A236740534577D4 /* mptString.cpp in Sources */, - 3311F54C9F4C5510A841D29F /* mptStringBuffer.cpp in Sources */, - 462288DCB25DE89FBB52652F /* mptStringFormat.cpp in Sources */, - BC43C5C9A8C1156391B9D3FA /* mptStringParse.cpp in Sources */, - 7DBE1EBF693B120292B81216 /* mptTime.cpp in Sources */, - 0918AA01F5949D441E129E58 /* mptUUID.cpp in Sources */, - AAE911569628BCD13FAB9803 /* serialization_utils.cpp in Sources */, - 48A5602B3422546E5D9F5482 /* version.cpp in Sources */, - F136D2675DFD2E84A658BDE6 /* libopenmpt_c.cpp in Sources */, - DCF2BB5E48046405D155F644 /* libopenmpt_cxx.cpp in Sources */, - F160FBD5DD35438906E58285 /* libopenmpt_ext_impl.cpp in Sources */, - 3C74EB7D28B395F9D135722B /* libopenmpt_impl.cpp in Sources */, - B7DD7231A32F4A218C4E8731 /* AGC.cpp in Sources */, - 17DB0EE1032DE6D0EC4B23E1 /* DSP.cpp in Sources */, - 215326728D172562567D552C /* EQ.cpp in Sources */, - 55866632C1A0C9D30AC3D967 /* Reverb.cpp in Sources */, - 8DAD47C4F99432BA02833436 /* AudioCriticalSection.cpp in Sources */, - 3243F49B9E0951B8E764DF1A /* ContainerMMCMP.cpp in Sources */, - 5CC56D85486ED5B47104F133 /* ContainerPP20.cpp in Sources */, - 96B71BAA02F37B6D0BE8F8FC /* ContainerUMX.cpp in Sources */, - 285F14E2949A74A59D8FF134 /* ContainerXPK.cpp in Sources */, - F33927D4DFA1EDA1480D02B8 /* Dlsbank.cpp in Sources */, - 14ECEE7F0054B54D69BFC963 /* Fastmix.cpp in Sources */, - C236E8A5AEDF4FD5D7756B54 /* ITCompression.cpp in Sources */, - A5600C3091C8D2FDFA33E713 /* ITTools.cpp in Sources */, - 64B8B1A9D09F9C9FD98D9E1B /* InstrumentExtensions.cpp in Sources */, - DA0ECFD34674625ACF4C0433 /* Load_669.cpp in Sources */, - 0B4B8D5177B020D80089C2B0 /* Load_amf.cpp in Sources */, - 9A36754A069C08D18F74AAA9 /* Load_ams.cpp in Sources */, - CB75625637DBF5DCC0B397B5 /* Load_c67.cpp in Sources */, - 67BA1D31D31FB1B75CF85290 /* Load_dbm.cpp in Sources */, - 13A07838FFB27891A89C557E /* Load_digi.cpp in Sources */, - 4F376F0CBB9C02934475A46B /* Load_dmf.cpp in Sources */, - 9E13DF0A0A7972919351146A /* Load_dsm.cpp in Sources */, - 79435BA565565BFE0E4038EB /* Load_dsym.cpp in Sources */, - FA1AFF6E668092F5EF5834CE /* Load_dtm.cpp in Sources */, - 5081AF39BCE642C045BFE498 /* Load_far.cpp in Sources */, - A00304C30C69974995413922 /* Load_fmt.cpp in Sources */, - 33877EE79FEC116E28C5B346 /* Load_gdm.cpp in Sources */, - 19A574CC850A08530EE3A92B /* Load_imf.cpp in Sources */, - D3E39AFBBF4B61C928B775DF /* Load_it.cpp in Sources */, - 45F1E78BB1567B123A2F1DEB /* Load_itp.cpp in Sources */, - 7723EED7E388815E6C612337 /* Load_mdl.cpp in Sources */, - 128E2E117EF3C19707CC6370 /* Load_med.cpp in Sources */, - D8BA2E084420C28ECDF86367 /* Load_mid.cpp in Sources */, - 662C1EA7D291B12D5B6A5306 /* Load_mo3.cpp in Sources */, - 19950F6185FAA2E70ED344C0 /* Load_mod.cpp in Sources */, - 8EB8E77CFA1D7B0383F61CDC /* Load_mt2.cpp in Sources */, - CB35786C379B0BF3C073ADCB /* Load_mtm.cpp in Sources */, - AB62E49197E0342B80D8F2C2 /* Load_mus_km.cpp in Sources */, - 269F5D2B9204F1B11BDD928A /* Load_okt.cpp in Sources */, - 83C85939EF2DEDBF78068F98 /* Load_plm.cpp in Sources */, - 6C0D34C3D872C749614B6922 /* Load_psm.cpp in Sources */, - 0F225A277B87EDAD04608F86 /* Load_ptm.cpp in Sources */, - 3340DFDA9FA57261287E143A /* Load_s3m.cpp in Sources */, - 0A97505676FCE3DCFFD485B5 /* Load_sfx.cpp in Sources */, - CF9FD67B3B056A02C4DD0BDB /* Load_stm.cpp in Sources */, - D4761F3F40DCB2C5C9B4549E /* Load_stp.cpp in Sources */, - B83E6EBDA4BCBE568DB47CEE /* Load_symmod.cpp in Sources */, - 2FB418CD9B19AC5324F24D2C /* Load_uax.cpp in Sources */, - 667FC337D2E456BE5BBDF896 /* Load_ult.cpp in Sources */, - 01B1F8F96D168C80F6EE2D59 /* Load_wav.cpp in Sources */, - BABFF0BFA627B78D0F93CBA3 /* Load_xm.cpp in Sources */, - 320CD7C19E7CD93A679B53C3 /* MIDIEvents.cpp in Sources */, - FD2EDE41699FE0BA32BE5A43 /* MIDIMacros.cpp in Sources */, - 4D0BCC97391ECCF0E207A9DD /* MPEGFrame.cpp in Sources */, - B97DF2DAA5E5B8A80E51CDBE /* Message.cpp in Sources */, - 5AD886F7C613E7BACF08644A /* MixFuncTable.cpp in Sources */, - 0993995475039CCD3E221656 /* MixerLoops.cpp in Sources */, - 3118DFD71DC1460746576286 /* MixerSettings.cpp in Sources */, - 0FC9B2457B39B5BE44582F47 /* ModChannel.cpp in Sources */, - 3352268B1FFB8DBA4891A939 /* ModInstrument.cpp in Sources */, - 80EDE5166C00E66F15EAC25C /* ModSample.cpp in Sources */, - F4317F07E0AFCFA0C9A78D38 /* ModSequence.cpp in Sources */, - 6A603FED56B216DD3FD153ED /* OPL.cpp in Sources */, - 038481ACEF96810598805EF2 /* OggStream.cpp in Sources */, - 31D801561D55F59846D2F5AC /* Paula.cpp in Sources */, - E3B68D174F27909018460A19 /* RowVisitor.cpp in Sources */, - 432416ACAF89A93238624B0B /* S3MTools.cpp in Sources */, - 4B303DDB37C43283A0888C37 /* SampleFormatBRR.cpp in Sources */, - 5D8C01CEC99DA97452EF3BB4 /* SampleFormatFLAC.cpp in Sources */, - 395D617A25F156228EB5B0D6 /* SampleFormatMP3.cpp in Sources */, - A2FF919B8ED51899777F33EC /* SampleFormatMediaFoundation.cpp in Sources */, - D4689EC5407A466CC9CBD8AB /* SampleFormatOpus.cpp in Sources */, - F98711A1E51B07494EE060FD /* SampleFormatSFZ.cpp in Sources */, - 3D9E57B6A9BA49A77292B614 /* SampleFormatVorbis.cpp in Sources */, - BD3A568FA9E3BDBED279D93D /* SampleFormats.cpp in Sources */, - DBCF74CD47350854D00DAA2C /* SampleIO.cpp in Sources */, - 7FC08C1F6B2853EDD4936703 /* Snd_flt.cpp in Sources */, - 19C4832785DEE6C8CE00F75C /* Snd_fx.cpp in Sources */, - 9E7F6C348AE73202F3524718 /* Sndfile.cpp in Sources */, - 474F3CDDB3699F7EFC8BAF12 /* Sndmix.cpp in Sources */, - 2BC31655176D4C64003E547F /* SoundFilePlayConfig.cpp in Sources */, - 1562FC89817C5F2BCA9E6FBF /* Tables.cpp in Sources */, - 964FD5E882B79BB6EB22B0CC /* Tagging.cpp in Sources */, - 9DE27FDE894A46ACF2B55AC2 /* TinyFFT.cpp in Sources */, - A86D659114D3F8179DAB9AF0 /* UMXTools.cpp in Sources */, - 06288CA0F2D0F3CF1B670F4F /* UpgradeModule.cpp in Sources */, - 592F50D9C594E35F4E6D8538 /* WAVTools.cpp in Sources */, - 40AD65842C2BB61D152374B5 /* WindowedFIR.cpp in Sources */, - 4F15E1953B7DA763A4E8BB79 /* XMTools.cpp in Sources */, - 1AA1D44B860668D20FDF09AB /* load_j2b.cpp in Sources */, - B2726EB61E8F60A7E766CD14 /* mod_specifications.cpp in Sources */, - 99845C8105F55EFACE13D982 /* modcommand.cpp in Sources */, - 42C586B82E43D751173B95E9 /* modsmp_ctrl.cpp in Sources */, - 791105846579CB51CEE4DF67 /* pattern.cpp in Sources */, - 00695BFF6C7A03A6F5CB95E5 /* patternContainer.cpp in Sources */, - 468D8E30324D1FD59B6A07E0 /* DigiBoosterEcho.cpp in Sources */, - 00CDEF35EC0B9AB1958E76E3 /* LFOPlugin.cpp in Sources */, - 96964549826B8DFCAB1ACDF8 /* PlugInterface.cpp in Sources */, - FB8E692BE763B1DE1013F1DA /* PluginManager.cpp in Sources */, - 286C08F99488FAE95D606757 /* SymMODEcho.cpp in Sources */, - 98386A3B04555C2CCD2CC999 /* Chorus.cpp in Sources */, - 83B3BA15EF25FD3138BA32B6 /* Compressor.cpp in Sources */, - 29D0281815A570CB3E54B0C7 /* DMOPlugin.cpp in Sources */, - 265149CF923834C59B263641 /* DMOUtils.cpp in Sources */, - 2808B687947AF8A3DD0E2E28 /* Distortion.cpp in Sources */, - 7C697F89E87A273071CCB96F /* Echo.cpp in Sources */, - 57AF309E435966AD2C2A6EC8 /* Flanger.cpp in Sources */, - 8E12E12CFA2ED31DC306408B /* Gargle.cpp in Sources */, - 9BC4A6C78784376CF0A11F77 /* I3DL2Reverb.cpp in Sources */, - 225607830E003D92F7D044AD /* ParamEq.cpp in Sources */, - 4BE9706C37A90111A0C6E91B /* WavesReverb.cpp in Sources */, - 4F32CE34BB4C31D6046F416A /* tuning.cpp in Sources */, - 7F669750EB773FF774C9D136 /* tuningCollection.cpp in Sources */, + 8E038C28FA3EECEB0334697B /* ComponentManager.cpp in Sources */, + 2072C95A0CDA8F287545A43E /* FileReader.cpp in Sources */, + B31E743B1FAE352628AA163E /* Logging.cpp in Sources */, + F35A82D7DFD7751A0855762E /* Profiler.cpp in Sources */, + 941244A4002DA745494FB7D9 /* misc_util.cpp in Sources */, + 7922C7B4E53C2A562E5F3AEA /* mptFileIO.cpp in Sources */, + FD808E2269458D1232ABBDDC /* mptIO.cpp in Sources */, + 355D00B621C5C6838A30DB99 /* mptLibrary.cpp in Sources */, + 8154385BED18374BB67E6715 /* mptOS.cpp in Sources */, + A9D5FE6B154601E5DE647B6D /* mptPathString.cpp in Sources */, + A16384AD0D7EE74E56A0F7E2 /* mptRandom.cpp in Sources */, + FBD5325967F095FAB012A68E /* mptString.cpp in Sources */, + 79B21734E5ED77F7EEE2F486 /* mptStringBuffer.cpp in Sources */, + 63C1C45ACFFC241ED8F1A1AD /* mptStringFormat.cpp in Sources */, + 39F32B1B25717CB40E693A4C /* mptStringParse.cpp in Sources */, + 53E63271BF75F45BC871D573 /* mptTime.cpp in Sources */, + DF3FBEB34BCF7F9E54CB60B6 /* mptUUID.cpp in Sources */, + 47CF92D1330E3D4DDC90197F /* serialization_utils.cpp in Sources */, + 6577D28151F4C5C47A71C6D8 /* version.cpp in Sources */, + AEB9A2AD1A80FFC963DB8D2C /* libopenmpt_c.cpp in Sources */, + D918B85A452A6001CE7BF240 /* libopenmpt_cxx.cpp in Sources */, + 0ECD7F4CFAA1C7FF235107FC /* libopenmpt_ext_impl.cpp in Sources */, + D9596CF9C59816756E1BF3A6 /* libopenmpt_impl.cpp in Sources */, + 94841FAA80D6F69969F533AA /* AGC.cpp in Sources */, + F481BB59E0D39249C9F2CF59 /* DSP.cpp in Sources */, + 5E123B28CAD63918933C6AE2 /* EQ.cpp in Sources */, + 129C12577EB675F8C7D8858C /* Reverb.cpp in Sources */, + 0A8AB00D76719B037F5F9D7F /* AudioCriticalSection.cpp in Sources */, + 58F6331CC4BC90380D181F9B /* ContainerMMCMP.cpp in Sources */, + C2AB5089AE54B8B8D7EAD337 /* ContainerPP20.cpp in Sources */, + 3C696864A8A4C827B19945B7 /* ContainerUMX.cpp in Sources */, + D7F10A90432D6B534C22E8E2 /* ContainerXPK.cpp in Sources */, + 5007568E3C6F1C5CA5DA3072 /* Dlsbank.cpp in Sources */, + 71B91D3A5D21E407C68CF81D /* Fastmix.cpp in Sources */, + 08D80A8DF48072BC1D178E3B /* ITCompression.cpp in Sources */, + 022E3BEAEE9501B8570116CE /* ITTools.cpp in Sources */, + E1941AF34D7C05E9566A0765 /* InstrumentExtensions.cpp in Sources */, + D787D7D343ED6A5ACCC50C33 /* Load_669.cpp in Sources */, + 08C49551742929D8FD01CBB0 /* Load_amf.cpp in Sources */, + 97AF7D4A031511D18CEDB2A9 /* Load_ams.cpp in Sources */, + C8EE6A563454FEDCBD2CA0B5 /* Load_c67.cpp in Sources */, + EDF75E64595DF2EAE23594C3 /* Load_dbm.cpp in Sources */, + B03890399C4B909245356D7F /* Load_digi.cpp in Sources */, + 4CB0770CB8150B9341EEAC6B /* Load_dmf.cpp in Sources */, + 9B8CE70A07F27A9190CA1C6A /* Load_dsm.cpp in Sources */, + 16DC72A602EF72FFABD84FEC /* Load_dsym.cpp in Sources */, + 805840A2ECBDD32875967501 /* Load_dtm.cpp in Sources */, + 4DFAB739B95F4BC04238ED98 /* Load_far.cpp in Sources */, + 9D7C0CC309E29F4992BA4122 /* Load_fmt.cpp in Sources */, + 300087E79C651A6E253EBC46 /* Load_gdm.cpp in Sources */, + 161E7DCC828310530B5CB22B /* Load_imf.cpp in Sources */, + 9988477985F00D47EE5B225D /* Load_it.cpp in Sources */, + 426AF08BAECF831237A825EB /* Load_itp.cpp in Sources */, + 749CF6D7E0018A5E69DA2B37 /* Load_mdl.cpp in Sources */, + 0F0737117B6CCA9704456C70 /* Load_med.cpp in Sources */, + D53337084199CA8ECA716C67 /* Load_mid.cpp in Sources */, + EC695FDA58CFF260E1A79439 /* Load_mo3.cpp in Sources */, + 160E18618273ABE70B4C4DC0 /* Load_mod.cpp in Sources */, + 8B31F07CF7968303806F25DC /* Load_mt2.cpp in Sources */, + C8AE806C341414F3BDECB5CB /* Load_mtm.cpp in Sources */, + 88964437741495D05D0C5368 /* Load_mus_km.cpp in Sources */, + ACDC9E5E184232E5A11AD4BD /* Load_okt.cpp in Sources */, + 80416239ECA6F5BF757F9798 /* Load_plm.cpp in Sources */, + 69863CC3D5EBCF495EC47122 /* Load_psm.cpp in Sources */, + 0C9B62277800F6AD01D99786 /* Load_ptm.cpp in Sources */, + 30B9E7DA9C1E7B6125F71C3A /* Load_s3m.cpp in Sources */, + 90D49189FC3925108512C7E8 /* Load_sfx.cpp in Sources */, + CC18DF7B387E7202C15614DB /* Load_stm.cpp in Sources */, + D1EF273F3D55BBC5C62D5D9E /* Load_stp.cpp in Sources */, + 9572CE6281F01EFC6AE8DC93 /* Load_symmod.cpp in Sources */, + 2C2D21CD9892B453216B562C /* Load_uax.cpp in Sources */, + 951256050178E98B8A508B64 /* Load_ult.cpp in Sources */, + A77F529413E5E51A9CBD87F3 /* Load_wav.cpp in Sources */, + A05158AD8CB91E7BF5243391 /* Load_xm.cpp in Sources */, + 581CDF59C48CE1D28DAB5B5B /* MIDIEvents.cpp in Sources */, + 3ADBE865A64BEBDE6F6A6567 /* MIDIMacros.cpp in Sources */, + EAA3E398D6B6E3F17FA0C0DE /* MPEGFrame.cpp in Sources */, + 7F229F586B8A6526D4F5793C /* Message.cpp in Sources */, + D787ED4843C34D0C4CB8CA9B /* MixFuncTable.cpp in Sources */, + 463FA478B2AFA6F17BCE207A /* MixerLoops.cpp in Sources */, + 4EB71B563A60838563F69E04 /* MixerSettings.cpp in Sources */, + 1580394E81F03BC74A0FB64F /* ModChannel.cpp in Sources */, + 50F162093C9ACA386530E6B7 /* ModInstrument.cpp in Sources */, + 1D86FD170999FD70B282DA5D /* ModSample.cpp in Sources */, + D165DFACBDE32F46A6DBEDDD /* ModSequence.cpp in Sources */, + 4707EC653359C3551C780066 /* OPL.cpp in Sources */, + A01C99AD8C2F9906351976F3 /* OggStream.cpp in Sources */, + 4EAA73AC3A2767EF63A46703 /* Paula.cpp in Sources */, + 2063983B8CD39AB455F2143D /* RowVisitor.cpp in Sources */, + 409D1EACAC02B23235DB530B /* S3MTools.cpp in Sources */, + 113B8D15FDCE82BD6693DC71 /* SampleFormatBRR.cpp in Sources */, + 5AB2FDC9C6C3A5704F1538B0 /* SampleFormatFLAC.cpp in Sources */, + 9637427A82CB3722EB8F91D6 /* SampleFormatMP3.cpp in Sources */, + 7F4D102F6B23972C54CDB17F /* SampleFormatMediaFoundation.cpp in Sources */, + D18E9AC13DA04268C6F1D4A7 /* SampleFormatOpus.cpp in Sources */, + BF9261DBAB26578314EBB037 /* SampleFormatSFZ.cpp in Sources */, + 7A37F5A1E653E792AF2B5400 /* SampleFormatVorbis.cpp in Sources */, + DAD9920DC682FA3CEF1816BC /* SampleFormats.cpp in Sources */, + D8487DCD44AE1054CD86B22C /* SampleIO.cpp in Sources */, + 6552F40C51BABADABA25CFF0 /* Snd_flt.cpp in Sources */, + 3FB1AD0FABCB10B1F4ED2045 /* Snd_fx.cpp in Sources */, + 8411D42170799AEFD9E4AE05 /* Sndfile.cpp in Sources */, + B64A62092265C5AA6B87D53E /* Sndmix.cpp in Sources */, + 088467B4F42D9DC3DDFEA4DE /* SoundFilePlayConfig.cpp in Sources */, + D277A8AE3E920B5087B41BE4 /* Tables.cpp in Sources */, + 5CF48166485C4834B1C75C4A /* Tagging.cpp in Sources */, + FAAFAE98E61775664F83897C /* TinyFFT.cpp in Sources */, + A5E66D91114C01189A24A3F0 /* UMXTools.cpp in Sources */, + 23C7C81E0F70304E38064CCD /* UpgradeModule.cpp in Sources */, + 56A858D9C20DEC5F4BE68D38 /* WAVTools.cpp in Sources */, + 1DE1C529095F16C3F256D45A /* WindowedFIR.cpp in Sources */, + ACE20F50984AD61D01B6EA33 /* XMTools.cpp in Sources */, + 171ADD4B837F70D20C5812AB /* load_j2b.cpp in Sources */, + EF0B0CA25B28FE9224006B00 /* mod_specifications.cpp in Sources */, + D63067A542A1691E0BC0E3A6 /* modcommand.cpp in Sources */, + 1FF9E65D0B7737F7F46EF58E /* modsmp_ctrl.cpp in Sources */, + D6DE333EC246FA0B2BB20E22 /* pattern.cpp in Sources */, + FD8E57FB69A0FFA1F2F191E1 /* patternContainer.cpp in Sources */, + 0CFE87AFF8BD185461DB005F /* DigiBoosterEcho.cpp in Sources */, + 9DB270B189F11A2D3274F75E /* LFOPlugin.cpp in Sources */, + DC1D804FC8F2C702F1A107FF /* PlugInterface.cpp in Sources */, + 18FBEDA104D035552D7F7551 /* PluginManager.cpp in Sources */, + 6505A6E4D12198D59AF90443 /* SymMODEcho.cpp in Sources */, + D5D1072741EEF9170AC66685 /* Chorus.cpp in Sources */, + A92C76B2159FB8CE5E33EE52 /* Compressor.cpp in Sources */, + 8FBC26157B916EC8A440AEC4 /* DMOPlugin.cpp in Sources */, + D522C3AC410AAEA24AF8AF1E /* DMOUtils.cpp in Sources */, + E5F7C7CE516A0AEB9AFE3F6F /* Distortion.cpp in Sources */, + 798F7B85E5A0232C6EF2B56B /* Echo.cpp in Sources */, + 347081FD201AB70C09EBBE27 /* Flanger.cpp in Sources */, + CBAB7E1837C8700900A0DD76 /* Gargle.cpp in Sources */, + 6135A0464DF530EBB61219F6 /* I3DL2Reverb.cpp in Sources */, + FF1658E2EBC08DF1D491950C /* ParamEq.cpp in Sources */, + A8D0C0959490513AFDAD3945 /* WavesReverb.cpp in Sources */, + 0C487A597862DDFAC184ED8E /* tuning.cpp in Sources */, + 7C8C934CE89D3BF371EFCD32 /* tuningCollection.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1310,6 +1922,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 +1957,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1371,6 +1995,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 +2028,7 @@ ../../include/ogg/include, ../../include/vorbis/include, ../.., + ../../src, ../../common, ../../soundlib, "$(IntDir)/svn_version", @@ -1417,7 +2053,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 3E76E37EAA40B5D9F346B4FE /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { + 413D05E6AD07D740F60DD665 /* Build configuration list for PBXNativeTarget "liblibopenmpt.dylib" */ = { isa = XCConfigurationList; buildConfigurations = ( 09B8609D754722887E4303A0 /* Debug */, Index: common/BuildSettings.h =================================================================== --- common/BuildSettings.h (revision 14777) +++ common/BuildSettings.h (working copy) @@ -12,7 +12,9 @@ -#include "CompilerDetect.h" +#include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_os.hpp" +#include "mpt/base/detect_quirks.hpp" @@ -40,8 +42,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 +338,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 +358,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 +539,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 +614,7 @@ #endif #define __STDC_CONSTANT_MACROS +#define __STDC_FORMAT_MACROS #define __STDC_LIMIT_MACROS #define _USE_MATH_DEFINES @@ -683,6 +681,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 +721,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 14777) +++ common/CompilerDetect.h (nonexistent) @@ -1,373 +0,0 @@ -/* - * CompilerDetect.h - * ---------------- - * Purpose: Detect current compiler and provide readable version test macros. - * Notes : (currently none) - * Authors: OpenMPT Devs - * 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 Property changes on: common/CompilerDetect.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: common/Endianness.h =================================================================== --- common/Endianness.h (revision 14777) +++ 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 14777) +++ common/FileReader.cpp (working copy) @@ -12,8 +12,8 @@ #include "FileReader.h" #if defined(MPT_ENABLE_TEMPFILE) && MPT_OS_WINDOWS +#include "mpt/system_error/system_error.hpp" #include "mptFileIO.h" -#include "mptOSError.h" #endif // MPT_ENABLE_TEMPFILE && MPT_OS_WINDOWS #if defined(MPT_ENABLE_TEMPFILE) && MPT_OS_WINDOWS @@ -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 14777) +++ 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 14777) +++ 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 14777) +++ common/misc_util.h (working copy) @@ -12,6 +12,9 @@ #include "BuildSettings.h" +#include "mpt/base/span.hpp" +#include "mpt/exception_text/exception_text.hpp" + #include "mptAssert.h" #include "mptBaseMacros.h" #include "mptBaseTypes.h" @@ -20,9 +23,7 @@ // old #include "mptBaseUtils.h" -#include "mptSpan.h" #include "mptMemory.h" -#include "mptExceptionText.h" #include "mptStringFormat.h" #include "mptStringParse.h" #include "mptOS.h" @@ -38,12 +39,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 +114,8 @@ } } -} // namespace Util - -namespace Util -{ - template class fixed_size_queue { @@ -202,75 +202,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 14777) +++ common/mptAlloc.h (working copy) @@ -14,9 +14,11 @@ +#include "mpt/base/alloc.hpp" +#include "mpt/base/span.hpp" + #include "mptBaseMacros.h" #include "mptMemory.h" -#include "mptSpan.h" #if MPT_CXX_AT_LEAST(20) #include @@ -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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ common/mptCRC.h (nonexistent) @@ -1,245 +0,0 @@ -/* - * mptCRC.h - * -------- - * Purpose: generic CRC implementation - * Notes : (currently none) - * Authors: Joern Heusipp - * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. - */ - -#pragma once - -#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 Property changes on: common/mptCRC.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: common/mptException.h =================================================================== --- common/mptException.h (revision 14777) +++ common/mptException.h (nonexistent) @@ -1,91 +0,0 @@ -/* - * mptException.h - * -------------- - * Purpose: Exception abstraction, in particular for bad_alloc. - * Notes : (currently none) - * Authors: OpenMPT Devs - * 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 Property changes on: common/mptException.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: common/mptExceptionText.h =================================================================== --- common/mptExceptionText.h (revision 14777) +++ common/mptExceptionText.h (nonexistent) @@ -1,132 +0,0 @@ -/* - * mptExceptionText.h - * ------------------ - * Purpose: Guess encoding of exception string - * Notes : (currently none) - * Authors: OpenMPT Devs - * 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 Property changes on: common/mptExceptionText.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: common/mptMemory.h =================================================================== --- common/mptMemory.h (revision 14777) +++ common/mptMemory.h (working copy) @@ -13,13 +13,13 @@ #include "BuildSettings.h" +#include "mpt/base/bit.hpp" +#include "mpt/base/memory.hpp" +#include "mpt/base/span.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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ common/mptOSError.h (nonexistent) @@ -1,195 +0,0 @@ -/* - * mptOSError.h - * ------------ - * Purpose: OS-specific error message handling. - * Notes : (currently none) - * Authors: OpenMPT Devs - * 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 Property changes on: common/mptOSError.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: common/mptPathString.cpp =================================================================== --- common/mptPathString.cpp (revision 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ common/mptSpan.h (nonexistent) @@ -1,231 +0,0 @@ -/* - * mptSpan.h - * --------- - * Purpose: C++20 span. - * Notes : (currently none) - * Authors: OpenMPT Devs - * 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 Property changes on: common/mptSpan.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: common/mptString.cpp =================================================================== --- common/mptString.cpp (revision 14777) +++ 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 14777) +++ common/mptString.h (working copy) @@ -12,9 +12,12 @@ #include "BuildSettings.h" +#include "mpt/base/span.hpp" +#include "mpt/string/types.hpp" +#include "mpt/string/utility.hpp" + #include "mptAlloc.h" #include "mptBaseTypes.h" -#include "mptSpan.h" #include #include @@ -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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ common/stdafx.h (working copy) @@ -58,6 +58,19 @@ #endif +#include "mpt/base/span.hpp" +#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 +#include "mpt/exception_text/exception_text.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/system_error/system_error.hpp" + + // this will be available everywhere #include "../common/mptBaseMacros.h" @@ -85,20 +98,10 @@ // // -#include "../common/mptException.h" -// -// -// - -#include "../common/mptSpan.h" -// "mptBaseTypes.h" -// -// - #include "../common/mptMemory.h" // "mptAssert.h" // "mptBaseTypes.h" -// "mptSpan.h" +// #include "mpt/base/span.hpp" // // // @@ -106,7 +109,7 @@ #include "../common/mptAlloc.h" // "mptBaseMacros.h" // "mptMemory.h" -// "mptSpan.h" +// #include "mpt/base/span.hpp" // // // @@ -123,17 +126,6 @@ #include "../common/mptStringBuffer.h" -#include "../common/mptOSError.h" -// "mptException.h" -// "mptString.h" -// -// - -#include "../common/mptExceptionText.h" -// "mptException.h" -// "mptString.h" -// - #include "../common/mptStringFormat.h" // Index: doc/year_changed.md =================================================================== --- doc/year_changed.md (revision 14777) +++ 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 14777) +++ installer/signtool/signtool.cpp (working copy) @@ -1,6 +1,14 @@ #include "BuildSettings.h" +#include "mpt/base/span.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/environment/environment.hpp" +#include "mpt/exception_text/exception_text.hpp" +#include "mpt/out_of_memory/out_of_memory.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" + #include "../common/mptBaseMacros.h" #include "../common/mptBaseTypes.h" #include "../common/mptBaseUtils.h" @@ -9,16 +17,10 @@ #include "../common/mptPathString.h" #include "../common/mptIO.h" #include "../common/mptFileIO.h" -#include "../common/mptException.h" -#include "../common/mptExceptionText.h" -#include "../common/mptSpan.h" #include "../common/mptUUID.h" #include "../common/Logging.h" #include "../common/misc_util.h" -#include "../misc/mptCrypto.h" -#include "../misc/mptUUIDNamespace.h" - #include #include #include Index: libopenmpt/.clang-format =================================================================== --- libopenmpt/.clang-format (revision 14777) +++ 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 14777) +++ 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 14777) +++ 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 14777) +++ 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) \ @@ -993,8 +994,22 @@ LIBOPENMPTTEST_CXX_SOURCES += \ libopenmpt/libopenmpt_test.cpp \ $(SOUNDLIB_CXX_SOURCES) \ - $(sort $(wildcard test/*.cpp)) \ + test/mpt_tests_base.cpp \ + test/mpt_tests_binary.cpp \ + test/mpt_tests_crc.cpp \ + test/mpt_tests_endian.cpp \ + test/mpt_tests_format.cpp \ + test/mpt_tests_parse.cpp \ + test/mpt_tests_random.cpp \ + test/mpt_tests_string.cpp \ + test/mpt_tests_string_convert.cpp \ + test/mpt_tests_uuid.cpp \ + test/test.cpp \ + test/TestToolsLib.cpp \ +# test/mpt_tests_crypto.cpp \ +# test/mpt_tests_uuid_namespace.cpp \ + LIBOPENMPTTEST_OBJECTS = $(LIBOPENMPTTEST_CXX_SOURCES:.cpp=.test.o) $(LIBOPENMPTTEST_C_SOURCES:.c=.test.o) LIBOPENMPTTEST_DEPENDS = $(LIBOPENMPTTEST_CXX_SOURCES:.cpp=.test.d) $(LIBOPENMPTTEST_C_SOURCES:.c=.test.d) ALL_OBJECTS += $(LIBOPENMPTTEST_OBJECTS) @@ -1364,6 +1379,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 +1396,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 +1447,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 +1477,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 14777) +++ misc/JSON.h (nonexistent) @@ -1,78 +0,0 @@ - -#pragma once - -#include "BuildSettings.h" - - -#ifdef MPT_WITH_NLOHMANNJSON -#include -#if MPT_COMPILER_CLANG -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wmismatched-tags" -#endif // MPT_COMPILER_CLANG -#include -#if MPT_COMPILER_CLANG -#pragma clang diagnostic pop -#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 Property changes on: misc/JSON.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: misc/mptCrypto.cpp =================================================================== --- misc/mptCrypto.cpp (revision 14777) +++ 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 14777) +++ misc/mptCrypto.h (nonexistent) @@ -1,857 +0,0 @@ -/* - * mptCrypto.h - * ----------- - * Purpose: . - * Notes : (currently none) - * Authors: Joern Heusipp - * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. - */ - -#pragma once - -#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 Property changes on: misc/mptCrypto.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: misc/mptUUIDNamespace.cpp =================================================================== --- misc/mptUUIDNamespace.cpp (revision 14777) +++ 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 14777) +++ misc/mptUUIDNamespace.h (nonexistent) @@ -1,32 +0,0 @@ -/* - * mptUUIDNamespace.h - * ------------------ - * 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. - */ - - -#pragma once - -#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 Property changes on: misc/mptUUIDNamespace.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/x-chdr \ No newline at end of property Index: mptrack/CImageListEx.h =================================================================== --- mptrack/CImageListEx.h (revision 14777) +++ mptrack/CImageListEx.h (working copy) @@ -11,7 +11,7 @@ #pragma once #include "BuildSettings.h" -#include "../common/mptSpan.h" +#include "mpt/base/span.hpp" OPENMPT_NAMESPACE_BEGIN Index: mptrack/HTTP.cpp =================================================================== --- mptrack/HTTP.cpp (revision 14777) +++ mptrack/HTTP.cpp (working copy) @@ -11,7 +11,7 @@ #include "stdafx.h" #include "HTTP.h" #include "../common/mptIO.h" -#include "../common/mptOSError.h" +#include "mpt/system_error/system_error.hpp" #include @@ -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 14777) +++ 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 14777) +++ 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 14777) +++ mptrack/MPTrackWine.cpp (working copy) @@ -24,7 +24,7 @@ #include "../common/mptThread.h" #include "../common/mptUUID.h" #include "../common/mptOS.h" -#include "../common/mptCRC.h" +#include "mpt/crc/crc.hpp" #include "../common/FileReader.h" #include "../misc/mptWine.h" #include "MPTrackUtilWine.h" @@ -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 14777) +++ 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 14777) +++ mptrack/UpdateCheck.cpp (working copy) @@ -19,10 +19,11 @@ // Setup dialog stuff #include "Mainfrm.h" #include "../common/mptThread.h" -#include "../common/mptOSError.h" -#include "../misc/mptCrypto.h" +#include "mpt/system_error/system_error.hpp" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" #include "HTTP.h" -#include "../misc/JSON.h" +#include "mpt/json/json.hpp" #include "dlg_misc.h" #include "../sounddev/SoundDeviceManager.h" #include "ProgressDialog.h" @@ -1608,7 +1609,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 14777) +++ 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: mptrack/wine/NativeSoundDeviceMarshalling.h =================================================================== --- mptrack/wine/NativeSoundDeviceMarshalling.h (revision 14777) +++ mptrack/wine/NativeSoundDeviceMarshalling.h (working copy) @@ -14,7 +14,7 @@ #pragma warning(push) #pragma warning(disable:4127) // conditional expression is constant #endif // MPT_COMPILER_MSVC -#include "../../misc/JSON.h" +#include "mpt/json/json.hpp" #if MPT_COMPILER_MSVC #pragma warning(pop) #endif // MPT_COMPILER_MSVC Index: openmpt123/.clang-format =================================================================== --- openmpt123/.clang-format (revision 14777) +++ 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 14777) +++ 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 14777) +++ 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/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 14777) +++ 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 14777) +++ 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 14777) +++ 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/OggStream.cpp =================================================================== --- soundlib/OggStream.cpp (revision 14777) +++ soundlib/OggStream.cpp (working copy) @@ -9,8 +9,8 @@ #include "stdafx.h" #include "OggStream.h" +#include "mpt/crc/crc.hpp" #include "../common/FileReader.h" -#include "../common/mptCRC.h" #include "../common/mptIO.h" Index: soundlib/plugins/PluginManager.cpp =================================================================== --- soundlib/plugins/PluginManager.cpp (revision 14777) +++ soundlib/plugins/PluginManager.cpp (working copy) @@ -57,7 +57,7 @@ #include "../../mptrack/AbstractVstEditor.h" #include "../../soundlib/AudioCriticalSection.h" #include "../mptrack/ExceptionHandler.h" -#include "../common/mptCRC.h" +#include "mpt/crc/crc.hpp" #endif // MODPLUG_TRACKER OPENMPT_NAMESPACE_BEGIN Index: soundlib/plugins/PluginStructs.h =================================================================== --- soundlib/plugins/PluginStructs.h (revision 14777) +++ 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/RowVisitor.h =================================================================== --- soundlib/RowVisitor.h (revision 14777) +++ soundlib/RowVisitor.h (working copy) @@ -12,7 +12,7 @@ #include "BuildSettings.h" -#include "../common/mptSpan.h" +#include "mpt/base/span.hpp" #include "Snd_defs.h" #include Index: soundlib/SampleFormatFLAC.cpp =================================================================== --- soundlib/SampleFormatFLAC.cpp (revision 14777) +++ soundlib/SampleFormatFLAC.cpp (working copy) @@ -25,7 +25,7 @@ #include "../soundbase/SampleFormatConverters.h" #include "../soundbase/SampleFormatCopy.h" #include "../soundlib/ModSampleCopy.h" -//#include "../common/mptCRC.h" +//#include "mpt/crc/crc.hpp" #include "OggStream.h" #ifdef MPT_WITH_OGG #if MPT_COMPILER_CLANG Index: soundlib/SampleFormatOpus.cpp =================================================================== --- soundlib/SampleFormatOpus.cpp (revision 14777) +++ soundlib/SampleFormatOpus.cpp (working copy) @@ -21,7 +21,7 @@ #include "../soundbase/SampleFormatConverters.h" #include "../soundbase/SampleFormatCopy.h" #include "../soundlib/ModSampleCopy.h" -//#include "../common/mptCRC.h" +//#include "mpt/crc/crc.hpp" #include "OggStream.h" #ifdef MPT_WITH_OGG #if MPT_COMPILER_CLANG Index: soundlib/SampleFormats.cpp =================================================================== --- soundlib/SampleFormats.cpp (revision 14777) +++ 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/SampleFormatVorbis.cpp =================================================================== --- soundlib/SampleFormatVorbis.cpp (revision 14777) +++ soundlib/SampleFormatVorbis.cpp (working copy) @@ -21,7 +21,7 @@ #include "../soundbase/SampleFormatConverters.h" #include "../soundbase/SampleFormatCopy.h" #include "../soundlib/ModSampleCopy.h" -//#include "../common/mptCRC.h" +//#include "mpt/crc/crc.hpp" #include "OggStream.h" #ifdef MPT_WITH_OGG #if MPT_COMPILER_CLANG Index: soundlib/WAVTools.h =================================================================== --- soundlib/WAVTools.h (revision 14777) +++ 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,68 @@ +/* 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 long double log2(const long double val) { + return static_cast::log2(static_cast(val)); +} + +inline double log2(const double val) { + return ::log2(val); +} + +inline float log2(const float val) { + return ::log2f(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::log2 +using std::log2; + +#endif // MPT_OS_DJGPP + + +#if MPT_OS_DJGPP + +inline long 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,263 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/integer.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,328 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,227 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/bit") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,55 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/math") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,112 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,65 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,178 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,115 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/binary") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,49 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crc") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,106 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crypto") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,81 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,133 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,78 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/message") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,168 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/simple") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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 +#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,82 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/parse") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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(std::abs(mpt::ConvertStringTo("58.65403492763") - 58.65403492763) <= 0.0001, true); +#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,304 @@ +/* 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/math.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 = 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) { + // 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,85 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/random") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,87 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,59 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/utility") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,408 @@ +/* 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/macros.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,234 @@ +/* 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{ + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string_convert") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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(); + } + + inline 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,102 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,51 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,68 @@ +/* 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 long double log2(const long double val) { + return static_cast::log2(static_cast(val)); +} + +inline double log2(const double val) { + return ::log2(val); +} + +inline float log2(const float val) { + return ::log2f(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::log2 +using std::log2; + +#endif // MPT_OS_DJGPP + + +#if MPT_OS_DJGPP + +inline long 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,263 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/integer.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,328 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,227 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/bit") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,55 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/math") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,112 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,65 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,178 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,115 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/binary") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,49 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crc") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,106 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crypto") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,81 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,133 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,78 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/message") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,168 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/simple") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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 +#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,82 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/parse") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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(std::abs(mpt::ConvertStringTo("58.65403492763") - 58.65403492763) <= 0.0001, true); +#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,304 @@ +/* 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/math.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 = 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) { + // 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,85 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/random") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,87 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,59 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/utility") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,408 @@ +/* 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/macros.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,234 @@ +/* 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{ + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string_convert") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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(); + } + + inline 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,102 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,51 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,68 @@ +/* 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 long double log2(const long double val) { + return static_cast::log2(static_cast(val)); +} + +inline double log2(const double val) { + return ::log2(val); +} + +inline float log2(const float val) { + return ::log2f(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::log2 +using std::log2; + +#endif // MPT_OS_DJGPP + + +#if MPT_OS_DJGPP + +inline long 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,263 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/integer.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,328 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,227 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/bit") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,55 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/math") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,112 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,65 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,178 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,68 @@ +/* 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 long double log2(const long double val) { + return static_cast::log2(static_cast(val)); +} + +inline double log2(const double val) { + return ::log2(val); +} + +inline float log2(const float val) { + return ::log2f(val); +} + +#else // !MPT_OS_DJGPP + +// C++11 std::log2 +using std::log2; + +#endif // MPT_OS_DJGPP + + +#if MPT_OS_DJGPP + +inline long 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,263 @@ +/* SPDX-License-Identifier: BSL-1.0 OR BSD-3-Clause */ + +#ifndef MPT_BASE_MEMORY_HPP +#define MPT_BASE_MEMORY_HPP + + + +#include "mpt/base/integer.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,328 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,227 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/bit") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,55 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/math") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,112 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,65 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,178 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,328 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/arithmetic_shift") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,227 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/bit") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,55 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/math") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,112 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_cast") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,65 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/saturate_round") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,178 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/base/wrapping_divide") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,115 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/binary") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,115 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/binary") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,115 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/binary") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,49 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crc") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,49 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crc") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,49 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crc") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,106 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crypto") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,106 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crypto") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,106 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/crypto") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ +#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,81 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,133 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,81 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,133 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,81 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/floatingpoint") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,133 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/endian/integer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,78 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/message") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,168 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/simple") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,78 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/message") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,168 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/simple") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,78 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/message") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,168 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/format/simple") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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 +#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 +#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,82 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/parse") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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(std::abs(mpt::ConvertStringTo("58.65403492763") - 58.65403492763) <= 0.0001, true); +#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,82 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/parse") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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(std::abs(mpt::ConvertStringTo("58.65403492763") - 58.65403492763) <= 0.0001, true); +#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,82 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/parse") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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(std::abs(mpt::ConvertStringTo("58.65403492763") - 58.65403492763) <= 0.0001, true); +#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,304 @@ +/* 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/math.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 = 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) { + // 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,85 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/random") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,304 @@ +/* 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/math.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 = 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) { + // 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,85 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/random") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,85 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/random") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,87 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,59 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/utility") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,408 @@ +/* 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/macros.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,87 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,59 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/utility") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,87 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/buffer") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + { + 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,59 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string/utility") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,408 @@ +/* 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/macros.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,234 @@ +/* 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{ + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string_convert") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,234 @@ +/* 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{ + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string_convert") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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,234 @@ +/* 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{ + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/string_convert") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + // 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(); + } + + inline 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(); + } + + inline 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,102 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,102 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,102 @@ +/* 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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,51 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,51 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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,51 @@ +/* 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/detect_compiler.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 { + +#if MPT_COMPILER_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wglobal-constructors" +#endif +MPT_TEST_GROUP_INLINE("mpt/uuid_namespace") +#if MPT_COMPILER_CLANG +#pragma clang diagnostic pop +#endif +{ + 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 14777) +++ test/test.cpp (working copy) @@ -14,10 +14,13 @@ #ifdef ENABLE_TESTS +#include "mpt/crc/crc.hpp" +#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" #include "../common/mptStringBuffer.h" #include "../common/serialization_utils.h" #include "../common/mptUUID.h" @@ -43,8 +46,9 @@ #endif // MODPLUG_TRACKER #include "../common/mptFileIO.h" #ifdef MODPLUG_TRACKER -#include "../misc/mptCrypto.h" -#include "../misc/mptUUIDNamespace.h" +#include "mpt/crypto/hash.hpp" +#include "mpt/crypto/jwk.hpp" +#include "mpt/uuid_namespace/uuid_namespace.hpp" #endif // MODPLUG_TRACKER #ifdef LIBOPENMPT_BUILD #include "../libopenmpt/libopenmpt_version.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 14777) +++ test/TestToolsLib.cpp (working copy) @@ -28,6 +28,95 @@ 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; + #else + MPT_UNUSED(loc); + #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; + #else + MPT_UNUSED(loc); + MPT_UNUSED(text_e); + #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; + #else + MPT_UNUSED(loc); + MPT_UNUSED(text_ex); + MPT_UNUSED(text_e); + #endif + } else + { + #if !MPT_OS_DJGPP + std::cout << "TEST..: " << MPT_FORMAT("{}({}): {} throws")(loc.file_name() ? loc.file_name() : "", loc.line(), text_e) << ": " << std::endl; + #else + MPT_UNUSED(loc); + MPT_UNUSED(text_ex); + MPT_UNUSED(text_e); + #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; + #else + MPT_UNUSED(loc); + MPT_UNUSED(text_a); + MPT_UNUSED(text_cmp); + MPT_UNUSED(text_b); + #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 14777) +++ 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 14777) +++ 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) \