1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

Serialisation: Add basic utilities to facilitate conversion to/from JSON with minimal boilerplate

This commit is contained in:
reuk 2023-08-25 13:19:22 +01:00
parent 1bc90055b9
commit 56195d1053
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C
48 changed files with 2057 additions and 28 deletions

View file

@ -1014,6 +1014,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -1112,6 +1114,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"
@ -3077,6 +3080,8 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -3175,6 +3180,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"

View file

@ -567,6 +567,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -576,7 +577,7 @@
INSTALL_PATH = "$(HOME)/Applications";
LLVM_LTO = YES;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";
@ -658,6 +659,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -666,7 +668,7 @@
INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";

View file

@ -1310,6 +1310,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2764,7 +2767,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_box2d.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3326,6 +3331,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3375,6 +3381,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -437,6 +437,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1924,6 +1927,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -5187,6 +5193,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -5334,6 +5343,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1310,6 +1310,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2764,7 +2767,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_box2d.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3326,6 +3331,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3375,6 +3381,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -437,6 +437,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1924,6 +1927,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -5187,6 +5193,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -5334,6 +5343,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1310,6 +1310,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2764,7 +2767,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_box2d.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3326,6 +3331,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3375,6 +3381,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -437,6 +437,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1924,6 +1927,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -5187,6 +5193,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -5334,6 +5343,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -571,6 +571,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -579,7 +580,7 @@
INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications";
LLVM_LTO = YES;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit -weak_framework UserNotifications";
@ -662,6 +663,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -669,7 +671,7 @@
INFOPLIST_FILE = Info-App.plist;
INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit -weak_framework UserNotifications";

View file

@ -890,6 +890,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -988,6 +990,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"
@ -2653,6 +2656,8 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -2751,6 +2756,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"

View file

@ -1150,6 +1150,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2383,7 +2386,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_events.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_graphics.cpp"/>
@ -2882,6 +2887,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -2931,6 +2937,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -392,6 +392,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1633,6 +1636,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4467,6 +4473,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4614,6 +4623,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -923,6 +923,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -1021,6 +1023,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"
@ -2839,6 +2842,8 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -2937,6 +2942,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"

View file

@ -499,6 +499,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -508,7 +509,7 @@
INSTALL_PATH = "$(HOME)/Applications";
LLVM_LTO = YES;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";
@ -637,6 +638,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -645,7 +647,7 @@
INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";

View file

@ -1158,6 +1158,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2554,7 +2557,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3062,6 +3067,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3111,6 +3117,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -401,6 +401,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1708,6 +1711,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4743,6 +4749,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4890,6 +4899,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1158,6 +1158,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2554,7 +2557,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3062,6 +3067,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3111,6 +3117,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -401,6 +401,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1708,6 +1711,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4743,6 +4749,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4890,6 +4899,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1158,6 +1158,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2554,7 +2557,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3062,6 +3067,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3111,6 +3117,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -401,6 +401,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1708,6 +1711,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4743,6 +4749,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4890,6 +4899,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -510,6 +510,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -518,7 +519,7 @@
INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications";
LLVM_LTO = YES;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit -weak_framework UserNotifications";
@ -650,6 +651,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -657,7 +659,7 @@
INFOPLIST_FILE = Info-App.plist;
INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit -weak_framework UserNotifications";

View file

@ -217,6 +217,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -484,7 +487,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\juce_core.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
@ -522,6 +527,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -571,6 +577,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -38,6 +38,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -154,6 +157,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -549,6 +555,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -696,6 +705,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -609,7 +609,7 @@ function(juce_add_module module_path)
_juce_link_libs_from_metadata("${module_name}" "${metadata_dict}" linuxLibs)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
if(module_name STREQUAL "juce_gui_basics")
if(module_name MATCHES "juce_gui_basics|juce_audio_processors|juce_core")
target_compile_options(${module_name} INTERFACE /bigobj)
endif()

View file

@ -894,6 +894,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -992,6 +994,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"
@ -2737,6 +2740,8 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
"../../../../../modules/juce_core/javascript/juce_JSON.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation.h"
"../../../../../modules/juce_core/javascript/juce_JSONSerialisation_test.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.cpp"
"../../../../../modules/juce_core/logging/juce_FileLogger.h"
"../../../../../modules/juce_core/logging/juce_Logger.cpp"
@ -2835,6 +2840,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/network/juce_URL.h"
"../../../../../modules/juce_core/network/juce_WebInputStream.cpp"
"../../../../../modules/juce_core/network/juce_WebInputStream.h"
"../../../../../modules/juce_core/serialisation/juce_Serialisation.h"
"../../../../../modules/juce_core/streams/juce_AndroidDocumentInputSource.h"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"
"../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"

View file

@ -1150,6 +1150,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2468,7 +2471,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_events.cpp"/>
@ -2973,6 +2978,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3022,6 +3028,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -392,6 +392,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1663,6 +1666,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4608,6 +4614,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4755,6 +4764,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -353,6 +353,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -1600,7 +1603,9 @@
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_build_tools.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_events.cpp"/>
@ -1815,6 +1820,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -1864,6 +1870,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -119,6 +119,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -631,6 +634,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -2622,6 +2628,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -2769,6 +2778,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -353,6 +353,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -1600,7 +1603,9 @@
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_build_tools.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_events.cpp"/>
@ -1815,6 +1820,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -1864,6 +1870,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -119,6 +119,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -631,6 +634,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -2622,6 +2628,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -2769,6 +2778,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -353,6 +353,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -1600,7 +1603,9 @@
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_build_tools.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_events.cpp"/>
@ -1815,6 +1820,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -1864,6 +1870,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -119,6 +119,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -631,6 +634,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -2622,6 +2628,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -2769,6 +2778,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1908,7 +1908,8 @@ protected:
const auto name = path.getFileNameWithoutExtension();
return name.equalsIgnoreCase ("include_juce_gui_basics")
|| name.equalsIgnoreCase ("include_juce_audio_processors");
|| name.equalsIgnoreCase ("include_juce_audio_processors")
|| name.equalsIgnoreCase ("include_juce_core");
}
StringArray getModuleLibs() const

View file

@ -459,6 +459,7 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
@ -466,7 +467,7 @@
INSTALL_PATH = "/usr/bin";
LLVM_LTO = YES;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";
@ -590,13 +591,14 @@
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK",
"$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK",
"$(HOME)/Developer/VSTSDK",
"$(SRCROOT)/../../JuceLibraryCode",
"$(SRCROOT)/../../../../modules",
"$(inherited)",
);
INSTALL_PATH = "/usr/bin";
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(HOME)/Developer/VSTSDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wcast-align -Wfloat-equal -Wno-ignored-qualifiers -Wsign-compare -Wsign-conversion -Wstrict-aliasing -Wswitch-enum -Wuninitialized -Wunreachable-code -Wunused-parameter -Wmissing-field-initializers -Wshadow-all -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wmissing-prototypes -Wnullable-to-nonnull-conversion -Wpedantic -Wdeprecated -Wunguarded-availability -Wunguarded-availability-new";
OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit";

View file

@ -1166,6 +1166,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2619,7 +2622,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3128,6 +3133,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3177,6 +3183,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -401,6 +401,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1732,6 +1735,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4833,6 +4839,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4980,6 +4989,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1166,6 +1166,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2619,7 +2622,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3128,6 +3133,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3177,6 +3183,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -401,6 +401,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1732,6 +1735,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4833,6 +4839,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4980,6 +4989,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1166,6 +1166,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2619,7 +2622,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_dsp.cpp"/>
@ -3128,6 +3133,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -3177,6 +3183,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -401,6 +401,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1732,6 +1735,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4833,6 +4839,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4980,6 +4989,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -1149,6 +1149,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2448,7 +2451,9 @@
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_ara.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_processors_lv2_libs.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_utils.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_core.cpp">
<AdditionalOptions> /bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_cryptography.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_data_structures.cpp"/>
<ClCompile Include="..\..\JuceLibraryCode\include_juce_events.cpp"/>
@ -2949,6 +2954,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\files\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_Javascript.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_Logger.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\maths\juce_BigInteger.h"/>
@ -2998,6 +3004,7 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_Socket.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_URL.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_FileInputSource.h"/>

View file

@ -386,6 +386,9 @@
<Filter Include="JUCE Modules\juce_core\network">
<UniqueIdentifier>{0F70B1A9-BB50-23F5-2AE7-F95E51A00389}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\serialisation">
<UniqueIdentifier>{D4D9BC01-0DED-2577-4B99-2FF7B9C7EF8A}</UniqueIdentifier>
</Filter>
<Filter Include="JUCE Modules\juce_core\streams">
<UniqueIdentifier>{D4C8DC40-2CD2-04B6-05D0-1E7A88841390}</UniqueIdentifier>
</Filter>
@ -1660,6 +1663,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation_test.cpp">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.cpp">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClCompile>
@ -4575,6 +4581,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSON.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\javascript\juce_JSONSerialisation.h">
<Filter>JUCE Modules\juce_core\javascript</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\logging\juce_FileLogger.h">
<Filter>JUCE Modules\juce_core\logging</Filter>
</ClInclude>
@ -4722,6 +4731,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\network\juce_WebInputStream.h">
<Filter>JUCE Modules\juce_core\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\serialisation\juce_Serialisation.h">
<Filter>JUCE Modules\juce_core\serialisation</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\streams\juce_AndroidDocumentInputSource.h">
<Filter>JUCE Modules\juce_core\streams</Filter>
</ClInclude>

View file

@ -0,0 +1,459 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2022 - Raw Material Software Limited
JUCE is an open source library subject to commercial or open-source
licensing.
The code included in this file is provided under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
To use, copy, modify, and/or distribute this software for any purpose with or
without fee is hereby granted provided that the above copyright notice and
this permission notice appear in all copies.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
namespace juce
{
/**
Options that control conversion from arbitrary types to juce::var.
@see ToVar
@tags{Core}
*/
class ToVarOptions
{
public:
/** By default, conversion will serialise the type using the marshallingVersion defined for
that type. Setting an explicit version allows the type to be serialised as an earlier
version.
*/
[[nodiscard]] ToVarOptions withExplicitVersion (std::optional<int> x) const { return withMember (*this, &ToVarOptions::explicitVersion, x); }
/** By default, conversion will include version information for any type with a non-null
marshallingVersion. Setting versionIncluded to false will cause the version info to be
omitted, which is useful in situations where the version information is not needed
(e.g. when presenting transient information to the user, rather than writing data to
disk that must be deserialised in the future).
*/
[[nodiscard]] ToVarOptions withVersionIncluded (bool x) const { return withMember (*this, &ToVarOptions::versionIncluded, x); }
/** @see withExplicitVersion() */
[[nodiscard]] auto getExplicitVersion() const { return explicitVersion; }
/** @see withVersionIncluded(). */
[[nodiscard]] auto getVersionIncluded() const { return versionIncluded; }
private:
std::optional<std::optional<int>> explicitVersion;
bool versionIncluded = true;
};
/**
Allows converting an object of arbitrary type to var.
To use this, you must first ensure that the type passed to convert is set up for serialisation.
For details of what this entails, see the docs for SerialisationTraits.
In short, the constant 'marshallingVersion', and either the single function 'serialise()', or
the function pair 'load()' and 'save()' must be defined for the type. These may be defined
as public members of the type T itself, or as public members of juce::SerialisationTraits<T>,
which is a specialisation of the SerialisationTraits template struct for the type T.
@see FromVar
@tags{Core}
*/
class ToVar
{
public:
using Options = ToVarOptions;
/** Attempts to convert the argument to a var using the serialisation utilities specified for
that type.
This will return a non-null optional if conversion succeeds, or nullopt if conversion fails.
*/
template <typename T>
static std::optional<var> convert (const T& t, const Options& options = {})
{
return Visitor::convert (t, options);
}
private:
class Visitor
{
public:
template <typename T>
static std::optional<var> convert (const T& t, const Options& options)
{
constexpr auto fallbackVersion = detail::ForwardingSerialisationTraits<T>::marshallingVersion;
const auto versionToUse = options.getExplicitVersion()
.value_or (fallbackVersion);
if (versionToUse > fallbackVersion)
{
// The requested explicit version is higher than the declared version of the type.
return std::nullopt;
}
Visitor visitor { versionToUse, options.getVersionIncluded() };
detail::doSave (visitor, t);
return visitor.value;
}
std::optional<int> getVersion() const { return version; }
template <typename... Ts>
void operator() (Ts&&... ts)
{
(visit (std::forward<Ts> (ts)), ...);
}
private:
Visitor (const std::optional<int>& explicitVersion, bool includeVersion)
: version (explicitVersion),
value ([&]() -> var
{
if (! (version.has_value() && includeVersion))
return var();
auto obj = std::make_unique<DynamicObject>();
obj->setProperty ("__version__", *version);
return obj.release();
}()),
versionIncluded (includeVersion) {}
template <typename T>
void visit (const T& t)
{
if constexpr (std::is_integral_v<T>)
{
push ((int64) t);
}
else if constexpr (std::is_floating_point_v<T>)
{
push ((double) t);
}
else if (auto converted = convert(t))
{
push (*converted);
}
else
{
value.reset();
}
}
template <typename T>
void visit (const Named<T>& named)
{
if (! value.has_value())
return;
if (value == var())
value = new DynamicObject;
auto* obj = value->getDynamicObject();
if (obj == nullptr)
{
// Serialisation failure! This may be caused by archiving a primitive or
// SerialisationSize, and then attempting to archive a named pair to the same
// archive instance.
// When using named pairs, *all* items serialised with a particular archiver must be
// named pairs.
jassertfalse;
value.reset();
return;
}
if (! trySetProperty (*obj, named))
value.reset();
}
template <typename T>
void visit (const SerialisationSize<T>&)
{
push (Array<var>{});
}
void visit (const bool& t)
{
push (t);
}
void visit (const String& t)
{
push (t);
}
void visit (const var& t)
{
push (t);
}
template <typename T>
std::optional<var> convert (const T& t)
{
return convert (t, Options{}.withVersionIncluded (versionIncluded));
}
void push (var v)
{
if (! value.has_value())
return;
if (*value == var())
*value = v;
else if (auto* array = value->getArray())
array->add (v);
else
value.reset();
}
template <typename T>
bool trySetProperty (DynamicObject& obj, const Named<T>& n)
{
if (const auto converted = convert (n.value))
{
obj.setProperty (Identifier (std::string (n.name)), *converted);
return true;
}
return false;
}
std::optional<int> version;
std::optional<var> value;
bool versionIncluded = true;
};
};
//==============================================================================
/**
Allows converting a var to an object of arbitrary type.
To use this, you must first ensure that the type passed to convert is set up for serialisation.
For details of what this entails, see the docs for SerialisationTraits.
In short, the constant 'marshallingVersion', and either the single function 'serialise()', or
the function pair 'load()' and 'save()' must be defined for the type. These may be defined
as public members of the type T itself, or as public members of juce::SerialisationTraits<T>,
which is a specialisation of the SerialisationTraits template struct for the type T.
@see ToVar
@tags{Core}
*/
class FromVar
{
public:
/** Attempts to convert a var to an instance of type T.
This will return a non-null optional if conversion succeeds, or nullopt if conversion fails.
*/
template <typename T>
static std::optional<T> convert (const var& v)
{
return Visitor::convert<T> (v);
}
private:
class Visitor
{
public:
template <typename T>
static std::optional<T> convert (const var& v)
{
const auto version = [&]() -> std::optional<int>
{
if (auto* obj = v.getDynamicObject())
if (obj->hasProperty ("__version__"))
return (int) obj->getProperty ("__version__");
return std::nullopt;
}();
Visitor visitor { version, v };
T t{};
detail::doLoad (visitor, t);
return ! visitor.failed ? std::optional<T> (std::move (t))
: std::nullopt;
}
std::optional<int> getVersion() const { return version; }
template <typename... Ts>
void operator() (Ts&&... ts)
{
(visit (std::forward<Ts> (ts)), ...);
}
private:
Visitor (std::optional<int> vn, const var& i)
: version (vn), input (i) {}
template <typename T>
void visit (T& t)
{
if constexpr (std::is_integral_v<T>)
{
readPrimitive (std::in_place_type<int64>, t);
}
else if constexpr (std::is_floating_point_v<T>)
{
readPrimitive (std::in_place_type<double>, t);
}
else
{
auto node = getNodeToRead();
if (! node.has_value())
return;
auto converted = convert<T> (*node);
if (converted.has_value())
t = *converted;
else
failed = true;
}
}
template <typename T>
void visit (const Named<T>& named)
{
auto node = getNodeToRead();
if (! node.has_value())
return;
auto* obj = node->getDynamicObject();
failed = obj == nullptr || ! tryGetProperty (*obj, named);
}
template <typename T>
void visit (const SerialisationSize<T>& t)
{
if (failed)
return;
if (auto* array = input.getArray())
{
t.size = static_cast<T> (array->size());
currentArrayIndex = 0;
}
else
{
failed = true;
}
}
void visit (bool& t)
{
readPrimitive (std::in_place_type<bool>, t);
}
void visit (String& t)
{
readPrimitive (std::in_place_type<String>, t);
}
void visit (var& t)
{
t = input;
}
static std::optional<double> pullTyped (std::in_place_type_t<double>, const var& source)
{
return source.isDouble() ? std::optional<double> ((double) source) : std::nullopt;
}
static std::optional<int64> pullTyped (std::in_place_type_t<int64>, const var& source)
{
return source.isInt() || source.isInt64() ? std::optional<int64> ((int64) source) : std::nullopt;
}
static std::optional<bool> pullTyped (std::in_place_type_t<bool>, const var& source)
{
return source.isBool() || source.isInt() || source.isInt64() ? std::optional<bool> ((bool) source) : std::nullopt;
}
static std::optional<String> pullTyped (std::in_place_type_t<String>, const var& source)
{
return source.isString() ? std::optional<String> (source.toString()) : std::nullopt;
}
std::optional<var> getNodeToRead()
{
if (failed)
return std::nullopt;
if (currentArrayIndex == std::numeric_limits<size_t>::max())
return input;
const auto* array = input.getArray();
if (array == nullptr)
return input;
if ((int) currentArrayIndex < array->size())
return array->getReference ((int) currentArrayIndex++);
failed = true;
return std::nullopt;
}
template <typename TypeToRead, typename T>
void readPrimitive (std::in_place_type_t<TypeToRead> tag, T& t)
{
auto node = getNodeToRead();
if (! node.has_value())
return;
auto typed = pullTyped (tag, *node);
if (typed.has_value())
t = static_cast<T> (*typed);
else
failed = true;
}
template <typename T>
static bool tryGetProperty (const DynamicObject& obj, const Named<T>& n)
{
const Identifier identifier (String (n.name.data(), n.name.size()));
if (! obj.hasProperty (identifier))
return false;
const auto converted = convert<T> (obj.getProperty (identifier));
if (! converted.has_value())
return false;
n.value = *converted;
return true;
}
std::optional<int> version;
var input;
size_t currentArrayIndex = std::numeric_limits<size_t>::max();
bool failed = false;
};
};
} // namespace juce

View file

@ -0,0 +1,652 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2022 - Raw Material Software Limited
JUCE is an open source library subject to commercial or open-source
licensing.
The code included in this file is provided under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
To use, copy, modify, and/or distribute this software for any purpose with or
without fee is hereby granted provided that the above copyright notice and
this permission notice appear in all copies.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
namespace juce
{
struct TypeWithExternalUnifiedSerialisation
{
int a;
std::string b;
std::vector<int> c;
std::map<std::string, int> d;
auto operator== (const TypeWithExternalUnifiedSerialisation& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.a, x.b, x.c, x.d); };
return tie (*this) == tie (other);
}
auto operator!= (const TypeWithExternalUnifiedSerialisation& other) const { return ! operator== (other); }
};
template <>
struct SerialisationTraits<TypeWithExternalUnifiedSerialisation>
{
static constexpr auto marshallingVersion = 2;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("a", t.a),
named ("b", t.b),
named ("c", t.c),
named ("d", t.d));
}
};
// Now that the serialiser trait is visible, it should be detected
static_assert (detail::serialisationKind<TypeWithExternalUnifiedSerialisation> == detail::SerialisationKind::external);
struct TypeWithInternalUnifiedSerialisation
{
double a;
float b;
String c;
StringArray d;
auto operator== (const TypeWithInternalUnifiedSerialisation& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.a, x.b, x.c, x.d); };
return tie (*this) == tie (other);
}
auto operator!= (const TypeWithInternalUnifiedSerialisation& other) const { return ! operator== (other); }
static constexpr auto marshallingVersion = 5;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("a", t.a),
named ("b", t.b),
named ("c", t.c),
named ("d", t.d));
}
};
static_assert (detail::serialisationKind<TypeWithInternalUnifiedSerialisation> == detail::SerialisationKind::internal);
struct TypeWithExternalSplitSerialisation
{
std::optional<String> a;
Array<int> b;
auto operator== (const TypeWithExternalSplitSerialisation& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.a, x.b); };
return tie (*this) == tie (other);
}
auto operator!= (const TypeWithExternalSplitSerialisation& other) const { return ! operator== (other); }
};
template <>
struct SerialisationTraits<TypeWithExternalSplitSerialisation>
{
static constexpr auto marshallingVersion = 10;
template <typename Archive>
static void load (Archive& archive, TypeWithExternalSplitSerialisation& t)
{
std::optional<String> a;
Array<String> hexStrings;
archive (named ("a", a), named ("b", hexStrings));
Array<int> b;
for (auto& i : hexStrings)
b.add (i.getHexValue32());
t = { a, b };
}
template <typename Archive>
static void save (Archive& archive, const TypeWithExternalSplitSerialisation& t)
{
Array<String> hexStrings;
for (auto& i : t.b)
hexStrings.add ("0x" + String::toHexString (i));
archive (named ("a", t.a), named ("b", hexStrings));
}
};
// Now that the serialiser trait is visible, it should be detected
static_assert (detail::serialisationKind<TypeWithExternalSplitSerialisation> == detail::SerialisationKind::external);
// Check that serialisation kinds are correctly detected for primitives
static_assert (detail::serialisationKind<bool> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind< int8_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind< uint8_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind< int16_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<uint16_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind< int32_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<uint32_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind< int64_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<uint64_t> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<float> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<double> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<std::byte> == detail::SerialisationKind::primitive);
static_assert (detail::serialisationKind<String> == detail::SerialisationKind::primitive);
// Check that serialisation is disabled for types with no serialsation defined
static_assert (detail::serialisationKind<Logger> == detail::SerialisationKind::none);
static_assert (detail::serialisationKind<CriticalSection> == detail::SerialisationKind::none);
struct TypeWithInternalSplitSerialisation
{
std::string a;
Array<int> b;
auto operator== (const TypeWithInternalSplitSerialisation& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.a, x.b); };
return tie (*this) == tie (other);
}
auto operator!= (const TypeWithInternalSplitSerialisation& other) const { return ! operator== (other); }
static constexpr auto marshallingVersion = 1;
template <typename Archive>
static void load (Archive& archive, TypeWithInternalSplitSerialisation& t)
{
std::string a;
Array<String> hexStrings;
archive (named ("a", a), named ("b", hexStrings));
Array<int> b;
for (auto& i : hexStrings)
b.add (i.getHexValue32());
t = { a, b };
}
template <typename Archive>
static void save (Archive& archive, const TypeWithInternalSplitSerialisation& t)
{
Array<String> hexStrings;
for (auto& i : t.b)
hexStrings.add ("0x" + String::toHexString (i));
archive (named ("a", t.a), named ("b", hexStrings));
}
};
static_assert (detail::serialisationKind<TypeWithInternalSplitSerialisation> == detail::SerialisationKind::internal);
struct TypeWithBrokenObjectSerialisation
{
int a;
int b;
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
// Archiving a named value will start reading/writing an object
archive (named ("a", t.a));
// Archiving a non-named value will assume that the current node is convertible
archive (t.b);
}
};
struct TypeWithBrokenPrimitiveSerialisation
{
int a;
int b;
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
// Archiving a non-named value will assume that the current node is convertible
archive (t.a);
// Archiving a named value will fail if the current node holds a non-object type
archive (named ("b", t.b));
}
};
struct TypeWithBrokenArraySerialisation
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T&)
{
size_t size = 5;
archive (size);
// serialisationSize should always be serialised first!
archive (serialisationSize (size));
}
};
struct TypeWithBrokenNestedSerialisation
{
int a;
TypeWithBrokenObjectSerialisation b;
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("a", t.a), named ("b", t.b));
}
};
struct TypeWithBrokenDynamicSerialisation
{
std::vector<TypeWithBrokenObjectSerialisation> a;
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (t.a);
}
};
struct TypeWithVersionedSerialisation
{
int a{}, b{}, c{}, d{};
bool operator== (const TypeWithVersionedSerialisation& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.a, x.b, x.c, x.d); };
return tie (*this) == tie (other);
}
bool operator!= (const TypeWithVersionedSerialisation& other) const { return ! operator== (other); }
static constexpr auto marshallingVersion = 3;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("a", t.a));
if (archive.getVersion() >= 1)
archive (named ("b", t.b));
if (archive.getVersion() >= 2)
archive (named ("c", t.c));
if (archive.getVersion() >= 3)
archive (named ("d", t.d));
}
};
struct TypeWithRawVarLast
{
int status = 0;
String message;
var extended;
bool operator== (const TypeWithRawVarLast& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.status, x.message, x.extended); };
return tie (*this) == tie (other);
}
bool operator!= (const TypeWithRawVarLast& other) const { return ! operator== (other); }
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("status", t.status),
named ("message", t.message),
named ("extended", t.extended));
}
};
struct TypeWithRawVarFirst
{
int status = 0;
String message;
var extended;
bool operator== (const TypeWithRawVarFirst& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.status, x.message, x.extended); };
return tie (*this) == tie (other);
}
bool operator!= (const TypeWithRawVarFirst& other) const { return ! operator== (other); }
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("extended", t.extended),
named ("status", t.status),
named ("message", t.message));
}
};
struct TypeWithInnerVar
{
int eventId = 0;
var payload;
bool operator== (const TypeWithInnerVar& other) const
{
const auto tie = [] (const auto& x) { return std::tie (x.eventId, x.payload); };
return tie (*this) == tie (other);
}
bool operator!= (const TypeWithInnerVar& other) const { return ! operator== (other); }
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("eventId", t.eventId),
named ("payload", t.payload));
}
};
class JSONSerialisationTest : public UnitTest
{
public:
JSONSerialisationTest() : UnitTest ("JSONSerialisation", UnitTestCategories::json) {}
void runTest() override
{
beginTest ("ToVar");
{
expectDeepEqual (ToVar::convert (false), false);
expectDeepEqual (ToVar::convert (true), true);
expectDeepEqual (ToVar::convert (1), 1);
expectDeepEqual (ToVar::convert (5.0f), 5.0);
expectDeepEqual (ToVar::convert (6LL), 6);
expectDeepEqual (ToVar::convert ("hello world"), "hello world");
expectDeepEqual (ToVar::convert (String ("hello world")), "hello world");
expectDeepEqual (ToVar::convert (std::vector<int> { 1, 2, 3 }), Array<var> { 1, 2, 3 });
expectDeepEqual (ToVar::convert (TypeWithExternalUnifiedSerialisation { 7,
"hello world",
{ 5, 6, 7 },
{ { "foo", 4 }, { "bar", 5 } } }),
makeObject ({ { "__version__", 2 },
{ "a", 7 },
{ "b", "hello world" },
{ "c", Array<var> { 5, 6, 7 } },
{ "d", Array<var> { makeObject ({ { "first", "bar" }, { "second", 5 } }),
makeObject ({ { "first", "foo" }, { "second", 4 } }) } } }));
expectDeepEqual (ToVar::convert (TypeWithInternalUnifiedSerialisation { 7.89,
4.321f,
"custom string",
{ "foo", "bar", "baz" } }),
makeObject ({ { "__version__", 5 },
{ "a", 7.89 },
{ "b", 4.321f },
{ "c", "custom string" },
{ "d", Array<var> { "foo", "bar", "baz" } } }));
expectDeepEqual (ToVar::convert (TypeWithExternalSplitSerialisation { "string", { 1, 2, 3 } }),
makeObject ({ { "__version__", 10 },
{ "a", makeObject ({ { "engaged", true }, { "value", "string" } }) },
{ "b", Array<var> { "0x1", "0x2", "0x3" } } }));
expectDeepEqual (ToVar::convert (TypeWithInternalSplitSerialisation { "string", { 16, 32, 48 } }),
makeObject ({ { "__version__", 1 },
{ "a", "string" },
{ "b", Array<var> { "0x10", "0x20", "0x30" } } }));
expect (ToVar::convert (TypeWithBrokenObjectSerialisation { 1, 2 }) == std::nullopt);
expect (ToVar::convert (TypeWithBrokenPrimitiveSerialisation { 1, 2 }) == std::nullopt);
expect (ToVar::convert (TypeWithBrokenArraySerialisation {}) == std::nullopt);
expect (ToVar::convert (TypeWithBrokenNestedSerialisation {}) == std::nullopt);
expect (ToVar::convert (TypeWithBrokenDynamicSerialisation { std::vector<TypeWithBrokenObjectSerialisation> (10) }) == std::nullopt);
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }),
makeObject ({ { "__version__", 3 },
{ "a", 1 },
{ "b", 2 },
{ "c", 3 },
{ "d", 4 } }));
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options{}.withVersionIncluded (false)),
makeObject ({ { "a", 1 },
{ "b", 2 },
{ "c", 3 },
{ "d", 4 } }));
// Requested explicit version is higher than the type's declared version
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options{}.withExplicitVersion (4)),
std::nullopt);
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options {}.withExplicitVersion (3)),
makeObject ({ { "__version__", 3 },
{ "a", 1 },
{ "b", 2 },
{ "c", 3 },
{ "d", 4 } }));
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options {}.withExplicitVersion (2)),
makeObject ({ { "__version__", 2 },
{ "a", 1 },
{ "b", 2 },
{ "c", 3 } }));
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options {}.withExplicitVersion (1)),
makeObject ({ { "__version__", 1 },
{ "a", 1 },
{ "b", 2 } }));
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options {}.withExplicitVersion (0)),
makeObject ({ { "__version__", 0 },
{ "a", 1 } }));
expectDeepEqual (ToVar::convert (TypeWithVersionedSerialisation { 1, 2, 3, 4 }, ToVar::Options {}.withExplicitVersion (std::nullopt)),
makeObject ({ { "a", 1 } }));
expectDeepEqual (ToVar::convert (TypeWithRawVarLast { 200, "success", true }),
makeObject ({ { "status", 200 }, { "message", "success" }, { "extended", true } }));
expectDeepEqual (ToVar::convert (TypeWithRawVarLast { 200,
"success",
makeObject ({ { "status", 123.456 },
{ "message", "failure" },
{ "extended", true } }) }),
makeObject ({ { "status", 200 },
{ "message", "success" },
{ "extended", makeObject ({ { "status", 123.456 },
{ "message", "failure" },
{ "extended", true } }) } }));
expectDeepEqual (ToVar::convert (TypeWithRawVarFirst { 200, "success", true }),
makeObject ({ { "status", 200 }, { "message", "success" }, { "extended", true } }));
expectDeepEqual (ToVar::convert (TypeWithRawVarFirst { 200,
"success",
makeObject ({ { "status", 123.456 },
{ "message", "failure" },
{ "extended", true } }) }),
makeObject ({ { "status", 200 },
{ "message", "success" },
{ "extended", makeObject ({ { "status", 123.456 },
{ "message", "failure" },
{ "extended", true } }) } }));
const auto payload = makeObject ({ { "foo", 1 }, { "bar", 2 } });
expectDeepEqual (ToVar::convert (TypeWithInnerVar { 404, payload }),
makeObject ({ { "eventId", 404 }, { "payload", payload } }));
}
beginTest ("FromVar");
{
expect (FromVar::convert<bool> (JSON::fromString ("false")) == false);
expect (FromVar::convert<bool> (JSON::fromString ("true")) == true);
expect (FromVar::convert<bool> (JSON::fromString ("0")) == false);
expect (FromVar::convert<bool> (JSON::fromString ("1")) == true);
expect (FromVar::convert<int> (JSON::fromString ("1")) == 1);
expect (FromVar::convert<float> (JSON::fromString ("5.0f")) == 5.0f);
expect (FromVar::convert<int64> (JSON::fromString ("6")) == 6);
expect (FromVar::convert<String> (JSON::fromString ("\"hello world\"")) == "hello world");
expect (FromVar::convert<std::vector<int>> (JSON::fromString ("[1,2,3]")) == std::vector<int> { 1, 2, 3 });
expect (FromVar::convert<TypeWithExternalUnifiedSerialisation> (makeObject ({ { "__version__", 2 },
{ "a", 7 },
{ "b", "hello world" },
{ "c", Array<var> { 5, 6, 7 } },
{ "d", Array<var> { makeObject ({ { "first", "bar" }, { "second", 5 } }),
makeObject ({ { "first", "foo" }, { "second", 4 } }) } } }))
== TypeWithExternalUnifiedSerialisation { 7,
"hello world",
{ 5, 6, 7 },
{ { "foo", 4 }, { "bar", 5 } } });
expect (FromVar::convert<TypeWithInternalUnifiedSerialisation> (makeObject ({ { "__version__", 5 },
{ "a", 7.89 },
{ "b", 4.321f },
{ "c", "custom string" },
{ "d", Array<var> { "foo", "bar", "baz" } } }))
== TypeWithInternalUnifiedSerialisation { 7.89,
4.321f,
"custom string",
{ "foo", "bar", "baz" } });
expect (FromVar::convert<TypeWithExternalSplitSerialisation> (makeObject ({ { "__version__", 10 },
{ "a", makeObject ({ { "engaged", true }, { "value", "string" } }) },
{ "b", Array<var> { "0x1", "0x2", "0x3" } } }))
== TypeWithExternalSplitSerialisation { "string", { 1, 2, 3 } });
expect (FromVar::convert<TypeWithInternalSplitSerialisation> (makeObject ({ { "__version__", 1 },
{ "a", "string" },
{ "b", Array<var> { "0x10", "0x20", "0x30" } } }))
== TypeWithInternalSplitSerialisation { "string", { 16, 32, 48 } });
expect (FromVar::convert<TypeWithBrokenObjectSerialisation> (JSON::fromString ("null")) == std::nullopt);
expect (FromVar::convert<TypeWithBrokenPrimitiveSerialisation> (JSON::fromString ("null")) == std::nullopt);
expect (FromVar::convert<TypeWithBrokenArraySerialisation> (JSON::fromString ("null")) == std::nullopt);
expect (FromVar::convert<TypeWithBrokenNestedSerialisation> (JSON::fromString ("null")) == std::nullopt);
expect (FromVar::convert<TypeWithBrokenDynamicSerialisation> (JSON::fromString ("null")) == std::nullopt);
expect (FromVar::convert<TypeWithInternalUnifiedSerialisation> (makeObject ({ { "a", 7.89 },
{ "b", 4.321f } })) == std::nullopt);
expect (FromVar::convert<TypeWithVersionedSerialisation> (makeObject ({ { "__version__", 3 },
{ "a", 1 },
{ "b", 2 },
{ "c", 3 },
{ "d", 4 } }))
== TypeWithVersionedSerialisation { 1, 2, 3, 4 });
expect (FromVar::convert<TypeWithVersionedSerialisation> (makeObject ({ { "__version__", 4 },
{ "a", 1 },
{ "b", 2 },
{ "c", 3 },
{ "d", 4 } }))
== TypeWithVersionedSerialisation { 1, 2, 3, 4 });
expect (FromVar::convert<TypeWithVersionedSerialisation> (makeObject ({ { "__version__", 2 },
{ "a", 1 },
{ "b", 2 },
{ "c", 3 } }))
== TypeWithVersionedSerialisation { 1, 2, 3, 0 });
expect (FromVar::convert<TypeWithVersionedSerialisation> (makeObject ({ { "__version__", 1 },
{ "a", 1 },
{ "b", 2 } }))
== TypeWithVersionedSerialisation { 1, 2, 0, 0 });
expect (FromVar::convert<TypeWithVersionedSerialisation> (makeObject ({ { "__version__", 0 },
{ "a", 1 } }))
== TypeWithVersionedSerialisation { 1, 0, 0, 0 });
expect (FromVar::convert<TypeWithVersionedSerialisation> (makeObject ({ { "a", 1 } }))
== TypeWithVersionedSerialisation { 1, 0, 0, 0 });
const auto raw = makeObject ({ { "status", 200 }, { "message", "success" }, { "extended", "another string" } });
expect (FromVar::convert<TypeWithRawVarLast> (raw) == TypeWithRawVarLast { 200, "success", "another string" });
expect (FromVar::convert<TypeWithRawVarFirst> (raw) == TypeWithRawVarFirst { 200, "success", "another string" });
const var payloads[] { makeObject ({ { "foo", 1 }, { "bar", 2 } }),
var (Array<var> { 1, 2 }),
var() };
for (const auto& payload : payloads)
{
const auto objectWithPayload = makeObject ({ { "eventId", 404 }, { "payload", payload } });
expect (FromVar::convert<TypeWithInnerVar> (objectWithPayload) == TypeWithInnerVar { 404, payload });
}
}
}
private:
void expectDeepEqual (const std::optional<var>& a, const std::optional<var>& b)
{
expect (deepEqual (a, b), a.has_value() && b.has_value() ? JSON::toString (*a) + " != " + JSON::toString (*b) : String());
}
static var makeObject (const std::map<Identifier, var>& map)
{
auto obj = std::make_unique<DynamicObject>();
for (auto& [key, value] : map)
obj->setProperty (key, value);
return obj.release();
}
static bool deepEqual (const DynamicObject& a, const DynamicObject& b)
{
if (a.getProperties().size() != b.getProperties().size())
return false;
for (const auto& [key, value] : a.getProperties())
{
if (! b.hasProperty (key))
return false;
if (! deepEqual (value, b.getProperty (key)))
return false;
}
return true;
}
static bool deepEqual (const Array<var>& a, const Array<var>& b)
{
return std::equal (a.begin(), a.end(), b.begin(), b.end(), [] (const var& i, const var& j) { return deepEqual (i, j); });
}
static bool deepEqual (const var& a, const var& b)
{
if (auto* i = a.getDynamicObject())
if (auto* j = b.getDynamicObject())
return deepEqual (*i, *j);
if (auto* i = a.getArray())
if (auto* j = b.getArray())
return deepEqual (*i, *j);
return a == b;
}
static bool deepEqual (const std::optional<var>& a, const std::optional<var>& b)
{
if (a.has_value() != b.has_value())
return false;
return ! a.has_value() || deepEqual (*a, *b);
}
};
static JSONSerialisationTest jsonSerialisationTest;
} // namespace juce

View file

@ -281,6 +281,7 @@
#include "maths/juce_MathsFunctions_test.cpp"
#include "misc/juce_EnumHelpers_test.cpp"
#include "containers/juce_FixedSizeFunction_test.cpp"
#include "javascript/juce_JSONSerialisation_test.cpp"
#endif
//==============================================================================

View file

@ -309,6 +309,8 @@ JUCE_END_IGNORE_WARNINGS_MSVC
#include "streams/juce_FileInputSource.h"
#include "logging/juce_FileLogger.h"
#include "javascript/juce_JSON.h"
#include "serialisation/juce_Serialisation.h"
#include "javascript/juce_JSONSerialisation.h"
#include "javascript/juce_Javascript.h"
#include "maths/juce_BigInteger.h"
#include "maths/juce_Expression.h"

View file

@ -0,0 +1,576 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2022 - Raw Material Software Limited
JUCE is an open source library subject to commercial or open-source
licensing.
The code included in this file is provided under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
To use, copy, modify, and/or distribute this software for any purpose with or
without fee is hereby granted provided that the above copyright notice and
this permission notice appear in all copies.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
namespace juce
{
#define JUCE_COMPARISON_OPS X(==) X(!=) X(<) X(<=) X(>) X(>=)
/**
Combines an object with a name.
Instances of Named have reference-like semantics. That is, Named stores a reference
to a wrapped value, rather than storing the value internally.
@tparam T the type of reference that is wrapped. Passing "const T" will cause the Named
instance to hold a "const T&"; passing "T" will cause the Named instance to
hold a "T&".
@see named()
@tags{Core}
*/
template <typename T>
struct Named
{
#define X(op) auto operator op (const Named& other) const { return value op other.value; }
JUCE_COMPARISON_OPS
#undef X
std::string_view name; ///< A name that corresponds to the value
T& value; ///< A reference to a value to wrap
};
/** Produces a Named instance that holds a mutable reference. */
template <typename T> constexpr auto named (std::string_view c, T& t) { return Named<T> { c, t }; }
/** Produces a Named instance that holds an immutable reference. */
template <typename T> constexpr auto named (std::string_view c, const T& t) { return Named<const T> { c, t }; }
/**
Holds a reference to some kind of size value, used to indicate that an object being marshalled
is of variable size (e.g. Array, vector, map, set, etc.).
If you need to write your own serialisation routines for a dynamically-sized type, ensure
that you archive an instance of SerialisationSize before any of the contents of the container.
@tparam the (probably numeric) type of the size value
@see serialisztionSize()
@tags{Core}
*/
template <typename T>
struct SerialisationSize
{
#define X(op) auto operator op (const SerialisationSize& other) const { return size op other.size; }
JUCE_COMPARISON_OPS
#undef X
T& size;
};
/** Produces a SerialisationSize instance that holds a mutable reference to a size value. */
template <typename T> constexpr auto serialisationSize (T& t) -> std::enable_if_t<std::is_integral_v<T>, SerialisationSize<T>> { return { t }; }
/** Produces a SerialisationSize instance that holds an immutable reference to a size value. */
template <typename T> constexpr auto serialisationSize (const T& t) -> std::enable_if_t<std::is_integral_v<T>, SerialisationSize<const T>> { return { t }; }
#undef JUCE_COMPARISON_OPS
/**
Allows serialisation functions to be attached to a specific type without having to modify the
declaration of that type.
A specialisation of SerialisationTraits must include:
- A static constexpr data member named 'marshallingVersion' with a value that is convertible
to std::optional<int>.
- Either:
- Normally, a single function with the following signature:
@code
template <typename Archive, typename Item>
static void serialise (Archive& archive, Item& item);
@endcode
- For types that must do slightly different work when loading and saving, you may supply two
functions with the following signatures, where "T" is a placeholder for the type on which
SerialisationTraits is specialised:
@code
template <typename Archive>
static void load (Archive& archive, T& item);
template <typename Archive>
static void save (Archive& archive, const T& item);
@endcode
If the marshallingVersion converts to a null optional, then all versioning information will be
ignored when marshalling the type. Otherwise, if the value converts to a non-null optional, this
versioning information will be included when serialising the type.
Inside serialise() and load() you may call archive.getVersion() to find the detected version
of the object being deserialised. archive.getVersion() will return an std::optional<int>,
where 'nullopt' indicates that no versioning information was detected.
Marshalling functions can also be specified directly inside the type to be marshalled. This
approach may be preferable as it is more concise. Internal marshalling functions are written
in exactly the same way as external ones; i.e. the type must include a marshallingVersion,
and either a single serialise function, or a load/save pair of functions, as specified above.
@tags{Core}
*/
template <typename> struct SerialisationTraits
{
/* Intentionally left blank. */
};
//==============================================================================
/*
The following are specialisations of SerialisationTraits for commonly-used types.
*/
template <typename... Ts>
struct SerialisationTraits<std::vector<Ts...>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void load (Archive& archive, T& t)
{
auto size = t.size();
archive (serialisationSize (size));
t.resize (size);
for (auto& element : t)
archive (element);
}
template <typename Archive, typename T>
static void save (Archive& archive, const T& t)
{
archive (serialisationSize (t.size()));
for (auto& element : t)
archive (element);
}
};
template <typename Element, typename Mutex, int minSize>
struct SerialisationTraits<Array<Element, Mutex, minSize>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void load (Archive& archive, T& t)
{
auto size = t.size();
archive (serialisationSize (size));
t.resize (size);
for (auto& element : t)
archive (element);
}
template <typename Archive, typename T>
static void save (Archive& archive, const T& t)
{
archive (serialisationSize (t.size()));
for (auto& element : t)
archive (element);
}
};
template <>
struct SerialisationTraits<StringArray>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (t.strings);
}
};
template <typename... Ts>
struct SerialisationTraits<std::pair<Ts...>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t)
{
archive (named ("first", t.first), named ("second", t.second));
}
};
template <typename T>
struct SerialisationTraits<std::optional<T>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive>
static void load (Archive& archive, std::optional<T>& t)
{
bool engaged = false;
archive (named ("engaged", engaged));
if (! engaged)
return;
t.emplace();
archive (named ("value", *t));
}
template <typename Archive>
static void save (Archive& archive, const std::optional<T>& t)
{
archive (named ("engaged", t.has_value()));
if (t.has_value())
archive (named ("value", *t));
}
};
template <>
struct SerialisationTraits<std::string>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive>
static void load (Archive& archive, std::string& t)
{
String temporary;
archive (temporary);
t = temporary.toStdString();
}
template <typename Archive>
static void save (Archive& archive, const std::string& t)
{
archive (String (t));
}
};
template <typename... Ts>
struct SerialisationTraits<std::map<Ts...>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void load (Archive& archive, T& t)
{
auto size = t.size();
archive (serialisationSize (size));
for (auto i = (decltype (size)) 0; i < size; ++i)
{
std::pair<typename T::key_type, typename T::mapped_type> element;
archive (element);
t.insert (element);
}
}
template <typename Archive, typename T>
static void save (Archive& archive, const T& t)
{
auto size = t.size();
archive (serialisationSize (size));
for (const auto& element : t)
archive (element);
}
};
template <typename... Ts>
struct SerialisationTraits<std::set<Ts...>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void load (Archive& archive, T& t)
{
auto size = t.size();
archive (serialisationSize (size));
for (auto i = (decltype (size)) 0; i < size; ++i)
{
typename T::value_type element;
archive (element);
t.insert (element);
}
}
template <typename Archive, typename T>
static void save (Archive& archive, const T& t)
{
auto size = t.size();
archive (serialisationSize (size));
for (const auto& element : t)
archive (element);
}
};
template <size_t N>
struct SerialisationTraits<char[N]>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void serialise (Archive& archive, T& t) { archive (String (t, N)); }
};
template <typename Element, size_t N>
struct SerialisationTraits<Element[N]>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void load (Archive& archive, T& t)
{
auto size = N;
archive (serialisationSize (size));
for (auto& element : t)
archive (element);
}
template <typename Archive, typename T>
static void save (Archive& archive, const T& t)
{
const auto size = N;
archive (serialisationSize (size));
for (auto& element : t)
archive (element);
}
};
template <typename Element, size_t N>
struct SerialisationTraits<std::array<Element, N>>
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename T>
static void load (Archive& archive, T& t)
{
auto size = N;
archive (serialisationSize (size));
for (auto& element : t)
archive (element);
}
template <typename Archive, typename T>
static void save (Archive& archive, const T& t)
{
const auto size = N;
archive (serialisationSize (size));
for (auto& element : t)
archive (element);
}
};
#ifndef DOXYGEN
/*
This namespace holds utilities for detecting and using serialisation functions.
The contents of this namespace are private, and liable to change, so you shouldn't use any of
the contents directly.
*/
namespace detail
{
struct DummyArchive
{
template <typename... Ts>
bool operator() (Ts&&...);
std::optional<int> getVersion() const { return {}; }
};
template <typename T, typename = void>
constexpr auto hasInternalVersion = false;
template <typename T>
constexpr auto hasInternalVersion<T, std::void_t<decltype (T::marshallingVersion)>> = true;
template <typename Traits, typename T, typename = void>
constexpr auto hasInternalSerialise = false;
template <typename Traits, typename T>
constexpr auto hasInternalSerialise<Traits, T, std::void_t<decltype (Traits::serialise (std::declval<DummyArchive&>(), std::declval<T&>()))>> = true;
template <typename Traits, typename T, typename = void>
constexpr auto hasInternalLoad = false;
template <typename Traits, typename T>
constexpr auto hasInternalLoad<Traits, T, std::void_t<decltype (Traits::load (std::declval<DummyArchive&>(), std::declval<T&>()))>> = true;
template <typename Traits, typename T, typename = void>
constexpr auto hasInternalSave = false;
template <typename Traits, typename T>
constexpr auto hasInternalSave<Traits, T, std::void_t<decltype (Traits::save (std::declval<DummyArchive&>(), std::declval<const T&>()))>> = true;
template <typename T>
struct SerialisedTypeTrait { using type = T; };
template <typename T>
struct SerialisedTypeTrait<SerialisationTraits<T>> { using type = T; };
template <typename T>
using SerialisedType = typename SerialisedTypeTrait<T>::type;
template <typename T>
constexpr auto hasSerialisation = hasInternalVersion<SerialisedType<T>>
|| hasInternalSerialise<T, SerialisedType<T>>
|| hasInternalLoad<T, SerialisedType<T>>
|| hasInternalSave<T, SerialisedType<T>>;
/* Different kinds of serialisation function. */
enum class SerialisationKind
{
none, // The type doesn't have any serialisation
primitive, // The type has serialisation handling defined directly on the archiver. enums will be converted to equivalent integral values
internal, // The type has internally-defined serialisation utilities
external, // The type has an external specialisation of SerialisationTraits
};
/* The SerialisationKind to use for the type T.
Primitive serialisation is used for arithmetic types, enums, Strings, and vars.
Internal serialisation is used for types that declare an internal marshallingVersion,
serialise(), load(), or save().
External serialisation is used in all other cases.
*/
template <typename T>
constexpr auto serialisationKind = []
{
if constexpr (std::is_arithmetic_v<T> || std::is_enum_v<T> || std::is_same_v<T, String> || std::is_same_v<T, var>)
return SerialisationKind::primitive;
else if constexpr (hasSerialisation<T>)
return SerialisationKind::internal;
else if constexpr (hasSerialisation<SerialisationTraits<T>>)
return SerialisationKind::external;
else
return SerialisationKind::none;
}();
/* This trait defines the serialisation utilities that are used for primitive types. */
template <typename T, SerialisationKind kind = serialisationKind<T>>
struct ForwardingSerialisationTraits
{
static constexpr auto marshallingVersion = std::nullopt;
template <typename Archive, typename Primitive>
static auto load (Archive& archive, Primitive& t)
{
if constexpr (std::is_enum_v<Primitive>)
return archive (*reinterpret_cast<std::underlying_type_t<Primitive>*> (&t));
else
return archive (t);
}
template <typename Archive, typename Primitive>
static auto save (Archive& archive, const Primitive& t)
{
if constexpr (std::is_enum_v<Primitive>)
return archive (*reinterpret_cast<const std::underlying_type_t<Primitive>*> (&t));
else
return archive (t);
}
};
/* This specialisation will be used for types with internal serialisation.
All members of ForwardingSerialisationTraits forward to the corresponding member of T.
*/
template <typename T>
struct ForwardingSerialisationTraits<T, SerialisationKind::internal>
{
static constexpr std::optional<int> marshallingVersion { T::marshallingVersion };
template <typename Archive, typename Item>
static auto serialise (Archive& archive, Item& t) -> decltype (Item::serialise (archive, t)) { return Item::serialise (archive, t); }
template <typename Archive, typename Item>
static auto load (Archive& archive, Item& t) -> decltype (Item::load (archive, t)) { return Item::load (archive, t); }
template <typename Archive, typename Item>
static auto save (Archive& archive, const Item& t) -> decltype (Item::save (archive, t)) { return Item::save (archive, t); }
};
/* This specialisation will be used for types with external serialisation.
@see SerialisationTraits
*/
template <typename T>
struct ForwardingSerialisationTraits<T, SerialisationKind::external> : SerialisationTraits<T> {};
template <typename T, typename = void>
constexpr auto hasSerialise = false;
template <typename T>
constexpr auto hasSerialise<T, std::void_t<decltype (ForwardingSerialisationTraits<T>::serialise (std::declval<DummyArchive&>(), std::declval<T&>()))>> = true;
template <typename T, typename = void>
constexpr auto hasLoad = false;
template <typename T>
constexpr auto hasLoad<T, std::void_t<decltype (ForwardingSerialisationTraits<T>::load (std::declval<DummyArchive&>(), std::declval<T&>()))>> = true;
template <typename T, typename = void>
constexpr auto hasSave = false;
template <typename T>
constexpr auto hasSave<T, std::void_t<decltype (ForwardingSerialisationTraits<T>::save (std::declval<DummyArchive&>(), std::declval<const T&>()))>> = true;
template <typename T>
constexpr auto delayStaticAssert = false;
/* Calls the correct function (serialise or save) to save the argument t to the archive.
*/
template <typename Archive, typename T>
auto doSave (Archive& archive, const T& t)
{
if constexpr (serialisationKind<T> == SerialisationKind::none)
static_assert (delayStaticAssert<T>, "No serialisation function found or marshallingVersion unset");
else if constexpr (hasSerialise<T> && ! hasSave<T>)
return ForwardingSerialisationTraits<T>::serialise (archive, t);
else if constexpr (! hasSerialise<T> && hasSave<T>)
return ForwardingSerialisationTraits<T>::save (archive, t);
else
static_assert (delayStaticAssert<T>, "Multiple serialisation functions found");
}
/* Calls the correct function (serialise or load) to load the argument t from the archive.
*/
template <typename Archive, typename T>
auto doLoad (Archive& archive, T& t)
{
if constexpr (serialisationKind<T> == SerialisationKind::none)
static_assert (delayStaticAssert<T>, "No serialisation function found or marshallingVersion unset");
else if constexpr (hasSerialise<T> && ! hasLoad<T>)
return ForwardingSerialisationTraits<T>::serialise (archive, t);
else if constexpr (! hasSerialise<T> && hasLoad<T>)
return ForwardingSerialisationTraits<T>::load (archive, t);
else
static_assert (delayStaticAssert<T>, "Multiple serialisation functions found");
}
} // namespace detail
#endif
} // namespace juce